'mesa',
['c', 'cpp'],
version : run_command(
- [find_program('python', 'python2', 'python3'), 'bin/meson_get_version.py']
+ [find_program('python', 'python3'), 'bin/meson_get_version.py']
).stdout(),
license : 'MIT',
meson_version : '>= 0.46',
null_dep = dependency('', required : false)
+if get_option('layout') != 'mirror'
+ error('`mirror` is the only build directory layout supported')
+endif
+
# Arguments for the preprocessor, put these in a separate array from the C and
# C++ (cpp in meson terminology) arguments since they need to be added to the
# default arguments for both C and C++.
# TODO: PPC, Sparc
if ['x86', 'x86_64'].contains(host_machine.cpu_family())
gallium_drivers = [
- 'r300', 'r600', 'radeonsi', 'nouveau', 'virgl', 'svga', 'swrast'
+ 'r300', 'r600', 'radeonsi', 'nouveau', 'virgl', 'svga', 'swrast',
+ 'iris'
]
elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
gallium_drivers = [
with_freedreno_vk = _vulkan_drivers.contains('freedreno')
with_any_vk = _vulkan_drivers.length() != 0 and _vulkan_drivers != ['']
-if with_freedreno_vk and get_option('I-love-half-baked-turnips') != true
- error('Cannot enable freedreno vulkan driver')
-endif
-
if with_dri_swrast and (with_gallium_softpipe or with_gallium_swr)
error('Only one swrast provider can be built')
endif
with_vulkan_icd_dir = join_paths(get_option('datadir'), 'vulkan/icd.d')
endif
+# GNU/Hurd includes egl_dri2, without drm.
with_dri2 = (with_dri or with_any_vk) and (with_dri_platform == 'drm' or
host_machine.system() == 'gnu')
_dri3 = get_option('dri3')
endif
endif
-prog_pkgconfig = find_program('pkg-config')
-
_vdpau = get_option('gallium-vdpau')
if not system_has_kms_drm
if _vdpau == 'true'
if _vdpau != 'false'
dep_vdpau = dependency('vdpau', version : '>= 1.1', required : _vdpau == 'true')
if dep_vdpau.found()
- dep_vdpau = declare_dependency(
- compile_args : run_command(prog_pkgconfig, ['vdpau', '--cflags']).stdout().split()
- )
+ dep_vdpau = dep_vdpau.partial_dependency(compile_args : true)
with_gallium_vdpau = true
endif
endif
if _va != 'false'
dep_va = dependency('libva', version : '>= 0.38.0', required : _va == 'true')
if dep_va.found()
- dep_va_headers = declare_dependency(
- compile_args : run_command(prog_pkgconfig, ['libva', '--cflags']).stdout().split()
- )
+ dep_va_headers = dep_va.partial_dependency(compile_args : true)
with_gallium_va = true
endif
endif
dependency('hardware'),
dependency('sync'),
]
+ if with_gallium
+ dep_android += dependency('backtrace')
+ endif
if get_option('platform-sdk-version') >= 26
dep_android += dependency('nativewindow')
endif
pre_args += '-D__EXTENSIONS__'
elif host_machine.system() == 'windows'
pre_args += [
- '-D_WINDOWS', '-D_WIN32_WINNT=0x0601', '-D_WINVER=0x0601',
+ '-D_WINDOWS', '-D_WIN32_WINNT=0x0601', '-DWINVER=0x0601',
'-DPIPE_SUBSYSTEM_WINDOWS_USER',
'-D_USE_MATH_DEFINES', # XXX: scons doesn't use this for mingw
]
'/wd4756', # overflow in constant arithmetic
'/wd4800', # forcing value to bool 'true' or 'false' (performance warning)
'/wd4996', # disabled deprecated POSIX name warnings
- '/wd4291'] # no matching operator delete found
+ '/wd4291', # no matching operator delete found
+ '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+ '/wd4200', # nonstandard extension used: zero-sized array in struct/union
+ '/wd4624', # destructor was implicitly defined as deleted [from LLVM]
+ ]
if cc.has_argument(a)
c_args += a
endif
'-Werror=return-type',
'-Werror=empty-body',
'-Werror=incompatible-pointer-types',
+ '-Werror=int-conversion',
'-Wno-missing-field-initializers',
'-Wno-format-truncation',
'-fno-math-errno',
'-fno-trapping-math',
'-Qunused-arguments',
+ '-fno-common',
]
# MinGW chokes on format specifiers and I can't get it all working
if not (cc.get_id() == 'gcc' and host_machine.system() == 'windows')
c_vis_args += '-fvisibility=hidden'
endif
- # Check for C and C++ arguments for MSVC2013 compatibility. These are only
- # used in parts of the mesa code base that need to compile with old versions
- # of MSVC, mainly common code
- foreach a : ['-Werror=pointer-arith', '-Werror=vla']
+ # Check for C and C++ arguments for MSVC compatibility. These are only used
+ # in parts of the mesa code base that need to compile with MSVC, mainly
+ # common code
+ foreach a : ['-Werror=pointer-arith', '-Werror=vla', '-Werror=gnu-empty-initializer']
if cc.has_argument(a)
c_msvc_compat_args += a
endif
if cc.get_id() == 'msvc'
add_project_link_arguments(
'/fixed:no',
- '/incremental:no',
'/dynamicbase',
'/nxcompat',
language : ['c', 'cpp'],
)
+ if get_option('buildtype') != 'debug'
+ add_project_link_arguments(
+ '/incremental:no',
+ language : ['c', 'cpp'],
+ )
+ endif
else
add_project_link_arguments(
'-Wl,--nxcompat',
endif
endif
+if cc.has_member('struct dirent', 'd_type', prefix: '''#include <sys/types.h>
+ #include <dirent.h>''')
+ pre_args += '-DHAVE_DIRENT_D_TYPE'
+endif
+
# strtod locale support
if cc.links('''
#define _GNU_SOURCE
with_gallium_drisw_kms = false
dep_libdrm = dependency(
'libdrm', version : '>=' + _drm_ver,
- required : with_dri2 or with_dri3
+ # GNU/Hurd includes egl_dri2, without drm.
+ required : (with_dri2 and host_machine.system() != 'gnu') or with_dri3
)
if dep_libdrm.found()
pre_args += '-DHAVE_LIBDRM'
endif
_shared_llvm = get_option('shared-llvm')
+if _shared_llvm == 'auto'
+ _shared_llvm = (host_machine.system() != 'windows')
+else
+ _shared_llvm = (_shared_llvm == 'true')
+endif
_llvm = get_option('llvm')
-# The cmake method will never find libllvm.so|dylib; this is fine for windows
-# because llvm doesn't support libllvm.dll
-_llvm_method = 'config-tool'
-if (meson.version().version_compare('>= 0.51.0') and
- host_machine.system() == 'windows')
- _llvm_method = 'cmake'
+# the cmake method can only link statically, so don't attempt to use it if we
+# want to link dynamically. Before 0.54.0 meson will try cmake even when shared
+# linking is requested, so we need to force the config-tool method to be used
+# in that case, but in 0.54.0 meson won't try the cmake method if shared
+# linking is requested.
+_llvm_method = 'auto'
+if meson.version().version_compare('< 0.54.0') and _shared_llvm
+ _llvm_method = 'config-tool'
endif
dep_llvm = null_dep
if prog_flex.found()
# windows compatibility (uses <io.h> instead of <unistd.h> and _isatty,
# _fileno functions)
- prog_flex = [prog_flex, '--wincompat']
+ prog_flex = [prog_flex, '--wincompat', '-D__STDC_VERSION__=199901']
else
prog_flex = [find_program('lex', 'flex', required : with_any_opengl)]
endif
endif
else
prog_bison = find_program('bison', required : with_any_opengl)
+
+ # Disable deprecated keyword warnings, since we have to use them for
+ # old-bison compat. See discussion in
+ # https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2161
+ if meson.version().version_compare('>= 0.52.0') and find_program('bison', required : false, version : '> 2.3').found()
+ prog_bison = [prog_bison, '-Wno-deprecated']
+ endif
+
prog_flex = find_program('flex', required : with_any_opengl)
endif
dep_wayland_server = dependency('wayland-server', version : '>=1.11')
if with_egl
dep_wayland_egl = dependency('wayland-egl-backend', version : '>= 3')
- dep_wayland_egl_headers = declare_dependency(
- compile_args : run_command(prog_pkgconfig, ['wayland-egl-backend', '--cflags']).stdout().split())
+ dep_wayland_egl_headers = dep_wayland_egl.partial_dependency(compile_args : true)
endif
wayland_dmabuf_xml = join_paths(
dep_wl_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable',