# 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 : 'x11,wayland,drm,surfaceless',
  description : 'comma separated list of window systems to support. wayland, x11, surfaceless, drm, etc.'
)
option(
  'dri3',
  type : 'combo',
  value : 'auto',
  choices : ['auto', 'yes', 'no'],
  description : 'enable support for dri3'
)
option(
  'dri-drivers',
  type : 'string',
  value : 'i915,i965',
  description : 'comma separated list of dri drivers to build.'
)
option(
  'dri-drivers-path',
  type : 'string',
  value : '',
  description : 'Location of dri drivers. Default: $libdir/dri.'
)
option(
  'gallium-drivers',
  type : 'string',
  value : 'pl111,radeonsi,nouveau,swrast,vc4',
  description : 'comma separated list of gallium drivers to build.'
)
option(
  'gallium-media',
  type : 'string',
  value : '',
  description : 'comma separated list of gallium media APIs to build (omx,va,vdpau,xvmc).'
)
option(
  'vulkan-drivers',
  type : 'string',
  value : 'intel,amd',
  description : 'comma separated list of vulkan drivers to build.'
)
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', 'yes', 'no'],
  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', 'yes', 'no'],
  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 : 'boolean',
  value : true,
  description : 'Build with LLVM support.'
)
option(
  'valgrind',
  type : 'boolean',
  value : true,
  description : 'Build with valgrind support if possible'
)
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.'
)
