[find_program('python', 'python2', 'python3'), 'bin/meson_get_version.py']
).stdout(),
license : 'MIT',
- meson_version : '>= 0.45',
+ meson_version : '>= 0.46',
default_options : ['buildtype=debugoptimized', 'b_ndebug=if-release', 'c_std=c99', 'cpp_std=c++11']
)
with_tests = get_option('build-tests')
with_valgrind = get_option('valgrind')
with_libunwind = get_option('libunwind')
-with_asm = get_option('asm')
with_glx_read_only_text = get_option('glx-read-only-text')
with_glx_direct = get_option('glx-direct')
with_osmesa = get_option('osmesa')
with_swr_arches = get_option('swr-arches')
with_tools = get_option('tools')
if with_tools.contains('all')
- with_tools = ['etnaviv', 'freedreno', 'glsl', 'intel', 'nir', 'nouveau', 'xvmc']
+ with_tools = [
+ 'drm-shim',
+ 'etnaviv',
+ 'freedreno',
+ 'glsl',
+ 'intel',
+ 'nir',
+ 'nouveau',
+ 'xvmc',
+ ]
endif
dri_drivers_path = get_option('dri-drivers-path')
endif
endif
-if not (with_dri or with_gallium or with_glx == 'xlib' or with_glx == 'gallium-xlib')
+if not (with_dri or with_gallium or with_glx != 'disabled')
with_gles1 = false
with_gles2 = false
with_opengl = false
error('xlib conflicts with any dri driver')
endif
elif with_glx == 'dri'
- if not with_dri
- error('dri based GLX requires at least one DRI driver')
- elif not with_shared_glapi
+ if not with_shared_glapi
error('dri based GLX requires shared-glapi')
endif
endif
pre_args += '-DHAVE_HAIKU_PLATFORM'
endif
-prog_python = import('python3').find_python()
+if meson.version().version_compare('>=0.50')
+ prog_python = import('python').find_installation('python3')
+else
+ prog_python = import('python3').find_python()
+endif
has_mako = run_command(
prog_python, '-c',
'''
# TODO: shared/static? Is this even worth doing?
-# When cross compiling we generally need to turn off the use of assembly,
-# because mesa's assembly relies on building an executable for the host system,
-# and running it to get information about struct sizes. There is at least one
-# case of cross compiling where we can use asm, and that's x86_64 -> x86 when
-# host OS == build OS, since in that case the build machine can run the host's
-# binaries.
-if with_asm and meson.is_cross_build()
- if build_machine.system() != host_machine.system()
- # TODO: It may be possible to do this with an exe_wrapper (like wine).
- message('Cross compiling from one OS to another, disabling assembly.')
- with_asm = false
- elif not (build_machine.cpu_family().startswith('x86') and host_machine.cpu_family() == 'x86')
- # FIXME: Gentoo always sets -m32 for x86_64 -> x86 builds, resulting in an
- # x86 -> x86 cross compile. We use startswith rather than == to handle this
- # case.
- # TODO: There may be other cases where the 64 bit version of the
- # architecture can run 32 bit binaries (aarch64 and armv7 for example)
- message('''
- Cross compiling to different architectures, and the host cannot run
- the build machine's binaries. Disabling assembly.
- ''')
- with_asm = false
- endif
-endif
-
with_asm_arch = ''
-if with_asm
- if host_machine.cpu_family() == 'x86'
- if system_has_kms_drm or host_machine.system() == 'gnu'
- with_asm_arch = 'x86'
- pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
- '-DUSE_SSE_ASM']
-
- if with_glx_read_only_text
- pre_args += ['-DGLX_X86_READONLY_TEXT']
- endif
- endif
- elif host_machine.cpu_family() == 'x86_64'
- if system_has_kms_drm
- with_asm_arch = 'x86_64'
- pre_args += ['-DUSE_X86_64_ASM']
- endif
- elif host_machine.cpu_family() == 'arm'
- if system_has_kms_drm
- with_asm_arch = 'arm'
- pre_args += ['-DUSE_ARM_ASM']
- endif
- elif host_machine.cpu_family() == 'aarch64'
- if system_has_kms_drm
- with_asm_arch = 'aarch64'
- pre_args += ['-DUSE_AARCH64_ASM']
- endif
- elif host_machine.cpu_family() == 'sparc64'
- if system_has_kms_drm
- with_asm_arch = 'sparc'
- pre_args += ['-DUSE_SPARC_ASM']
- endif
- elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
- if system_has_kms_drm
- with_asm_arch = 'ppc64le'
- pre_args += ['-DUSE_PPC64LE_ASM']
+if host_machine.cpu_family() == 'x86'
+ if system_has_kms_drm or host_machine.system() == 'gnu'
+ with_asm_arch = 'x86'
+ pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
+ '-DUSE_SSE_ASM']
+
+ if with_glx_read_only_text
+ pre_args += ['-DGLX_X86_READONLY_TEXT']
endif
endif
+elif host_machine.cpu_family() == 'x86_64'
+ if system_has_kms_drm
+ with_asm_arch = 'x86_64'
+ pre_args += ['-DUSE_X86_64_ASM']
+ endif
+elif host_machine.cpu_family() == 'arm'
+ if system_has_kms_drm
+ with_asm_arch = 'arm'
+ pre_args += ['-DUSE_ARM_ASM']
+ endif
+elif host_machine.cpu_family() == 'aarch64'
+ if system_has_kms_drm
+ with_asm_arch = 'aarch64'
+ pre_args += ['-DUSE_AARCH64_ASM']
+ endif
+elif host_machine.cpu_family() == 'sparc64'
+ if system_has_kms_drm
+ with_asm_arch = 'sparc'
+ pre_args += ['-DUSE_SPARC_ASM']
+ endif
+elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
+ if system_has_kms_drm
+ with_asm_arch = 'ppc64le'
+ pre_args += ['-DUSE_PPC64LE_ASM']
+ endif
endif
# Check for standard headers and functions
dep_libdrm_nouveau = null_dep
dep_libdrm_intel = null_dep
-_drm_amdgpu_ver = '2.4.97'
+_drm_amdgpu_ver = '2.4.99'
_drm_radeon_ver = '2.4.71'
_drm_nouveau_ver = '2.4.66'
_drm_intel_ver = '2.4.75'
with_gallium_opencl or _llvm == 'true'
),
static : not _shared_llvm,
+ method : 'config-tool',
)
with_llvm = dep_llvm.found()
endif
# LLVM can be built without rtti, turning off rtti changes the ABI of C++
# programs, so we need to build all C++ code in mesa without rtti as well to
# ensure that linking works.
- #
- # In meson 0.51.0 we can use cmake to find LLVM in addittion to meson's
- # builtin llvm-config based finder. A new generic variable getter method
- # has also been added, so we'll use that if we can, to cover the cmake case.
- if meson.version().version_compare('>=0.51')
- # The CMake finder will return 'ON', the llvm-config will return 'YES'
- _rtti = ['ON', 'YES'].contains(dep_llvm.get_variable(cmake : 'LLVM_ENABLE_RTTI', configtool: 'has-rtti'))
- else
- _rtti = dep_llvm.get_configtool_variable('has-rtti') == 'YES'
- endif
- if not _rtti
+ if dep_llvm.get_configtool_variable('has-rtti') == 'NO'
if with_gallium_nouveau
error('The Nouveau driver requires rtti. You either need to turn off nouveau or use an LLVM built with LLVM_ENABLE_RTTI.')
elif with_gallium_opencl
pkg = import('pkgconfig')
prog_nm = find_program('nm', required : false)
-env_test = environment()
-if prog_nm.found()
- env_test.set('NM', prog_nm.path())
-endif
# This quirk needs to be applied to sources with functions defined in assembly
# as GCC LTO drops them. See: https://bugs.freedesktop.org/show_bug.cgi?id=109391