# 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.

option(
  'platforms',
  type : 'string',
  value : 'auto',
  description : 'comma separated list of window systems to support. If this is set to auto all platforms applicable to the OS will be enabled.'
)
option(
  'dri3',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable support for dri3'
)
option(
  'dri-drivers',
  type : 'string',
  value : 'auto',
  description : 'comma separated list of dri drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
  'dri-drivers-path',
  type : 'string',
  value : '',
  description : 'Location to install dri drivers. Default: $libdir/dri.'
)
option(
  'dri-search-path',
  type : 'string',
  value : '',
  description : 'Locations to search for dri drivers, passed as colon separated list. Default: dri-drivers-path.'
)
option(
  'gallium-drivers',
  type : 'string',
  value : 'auto',
  description : 'comma separated list of gallium drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
  'gallium-extra-hud',
  type : 'boolean',
  value : false,
  description : 'Enable HUD block/NIC I/O HUD status support',
)
option(
  'gallium-vdpau',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable gallium vdpau state tracker.',
)
option(
  'vdpau-libs-path',
  type : 'string',
  value : '',
  description : 'path to put vdpau libraries. defaults to $libdir/vdpau.'
)
option(
  'gallium-xvmc',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable gallium xvmc state tracker.',
)
option(
  'xvmc-libs-path',
  type : 'string',
  value : '',
  description : 'path to put xvmc libraries. defaults to $libdir.'
)
option(
  'gallium-omx',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable gallium omx bellagio state tracker.',
)
option(
  'omx-libs-path',
  type : 'string',
  value : '',
  description : 'path to put omx libraries. defaults to omx-bellagio pkg-config pluginsdir.'
)
option(
  'gallium-va',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable gallium va state tracker.',
)
option(
  'va-libs-path',
  type : 'string',
  value : '',
  description : 'path to put va libraries. defaults to $libdir/dri.'
)
option(
  'gallium-xa',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'enable gallium xa state tracker.',
)
option(
  'gallium-nine',
  type : 'boolean',
  value : false,
  description : 'build gallium "nine" Direct3D 9.x state tracker.',
)
option(
  'gallium-opencl',
  type : 'combo',
  choices : ['icd', 'standalone', 'disabled'],
  value : 'disabled',
  description : 'build gallium "clover" OpenCL state tracker.',
)
option(
  'd3d-drivers-path',
  type : 'string',
  value : '',
  description : 'Location of D3D drivers. Default: $libdir/d3d',
)
option(
  'vulkan-drivers',
  type : 'string',
  value : 'auto',
  description : 'comma separated list of vulkan drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
)
option(
  'shader-cache',
  type : 'boolean',
  value : true,
  description : 'Build with on-disk shader cache support'
)
option(
  'vulkan-icd-dir',
  type : 'string',
  value : '',
  description : 'Location relative to prefix to put vulkan icds on install. Default: $datadir/vulkan/icd.d'
)
option(
  'shared-glapi',
  type : 'boolean',
  value : true,
  description : 'Whether to build a shared or static glapi'
)
option(
  'gles1',
  type : 'boolean',
  value : true,
  description : 'Build support for OpenGL ES 1.x'
)
option(
  'gles2',
  type : 'boolean',
  value : true,
  description : 'Build support for OpenGL ES 2.x and 3.x'
)
option(
  'opengl',
  type : 'boolean',
  value : true,
  description : 'Build support for OpenGL (all versions)'
)
option(
  'gbm',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Build support for gbm platform'
)
option(
  'glx',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'disabled', 'dri', 'xlib', 'gallium-xlib'],
  description : 'Build support for GLX platform'
)
option(
  'egl',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Build support for EGL platform'
)
option(
  'glvnd',
  type : 'boolean',
  value : false,
  description : 'Enable GLVND support.'
)
option(
  'asm',
  type : 'boolean',
  value : true,
  description : 'Build assembly code if possible'
)
option(
  'llvm',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Build with LLVM support.'
)
option(
  'valgrind',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Build with valgrind support'
)
option(
  'libunwind',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Use libunwind for stack-traces'
)
option(
  'lmsensors',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'true', 'false'],
  description : 'Enable HUD lmsensors support.'
)
option(
  'build-tests',
  type : 'boolean',
  value : false,
  description : 'Build unit tests. Currently this will build *all* unit tests, which may build more than expected.'
)
option(
  'texture-float',
  type : 'boolean',
  value : false,
  description : 'Enable floating point textures and renderbuffers. This option may be patent encumbered, please read docs/patents.txt and consult with your lawyer before turning this on.'
)
option(
  'selinux',
  type : 'boolean',
  value : false,
  description : 'Build an SELinux-aware Mesa'
)
option(
  'osmesa',
  type : 'combo',
  value : 'none',
  choices : ['none', 'classic', 'gallium'],
  description : 'Build OSmesa.'
)
option(
  'osmesa-bits',
  type : 'combo',
  value : '8',
  choices : ['8', '16', '32'],
  description : 'Number of channel bits for OSMesa.'
)
option(
  'swr-arches',
  type : 'string',
  value : 'avx,avx2',
  description : 'Comma delemited swr architectures. choices : avx,avx2,knl,skx'
)
