X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=meson.build;h=5e250470ed1ce14f899e0d19171ce707f6791bb0;hb=18a6e426f3aa546c8eb74d40f66b265044bec683;hp=9a15c8ae3f2b733161df3f8bc6261688c83dbbb1;hpb=461a864316d5b70ea99c9e1dba7d71973af2aacc;p=mesa.git diff --git a/meson.build b/meson.build index 9a15c8ae3f2..5e250470ed1 100644 --- a/meson.build +++ b/meson.build @@ -25,8 +25,8 @@ project( [find_program('python', 'python2', 'python3'), 'bin/meson_get_version.py'] ).stdout(), license : 'MIT', - meson_version : '>= 0.44.1', - default_options : ['buildtype=debugoptimized', 'c_std=c99', 'cpp_std=c++11'] + meson_version : '>= 0.45', + default_options : ['buildtype=debugoptimized', 'b_ndebug=if-release', 'c_std=c99', 'cpp_std=c++11'] ) cc = meson.get_compiler('c') @@ -102,13 +102,15 @@ if _drivers.contains('auto') elif ['arm', 'aarch64'].contains(host_machine.cpu_family()) _drivers = [] else - error('Unknown architecture. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown architecture @0@. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.cpu_family())) endif elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system()) # only swrast would make sense here, but gallium swrast is a much better default _drivers = [] else - error('Unknown OS. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown OS @0@. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.system())) endif endif @@ -135,12 +137,14 @@ if _drivers.contains('auto') 'tegra', 'virgl', 'swrast', ] else - error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown architecture @0@. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.cpu_family())) endif elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system()) _drivers = ['swrast'] else - error('Unknown OS. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown OS @0@. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.system())) endif endif with_gallium_pl111 = _drivers.contains('pl111') @@ -175,14 +179,18 @@ if _vulkan_drivers.contains('auto') if system_has_kms_drm if host_machine.cpu_family().startswith('x86') _vulkan_drivers = ['amd', 'intel'] + elif ['arm', 'aarch64'].contains(host_machine.cpu_family()) + _vulkan_drivers = [] else - error('Unknown architecture. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown architecture @0@. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.cpu_family())) endif elif ['darwin', 'windows', 'cygwin', 'haiku'].contains(host_machine.system()) # No vulkan driver supports windows or macOS currently _vulkan_drivers = [] else - error('Unknown OS. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.') + error('Unknown OS @0@. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.'.format( + host_machine.system())) endif endif @@ -230,7 +238,8 @@ if _platforms.contains('auto') elif ['haiku'].contains(host_machine.system()) _platforms = ['haiku'] else - error('Unknown OS. Please pass -Dplatforms to set platforms. Patches gladly accepted to fix this.') + error('Unknown OS @0@. Please pass -Dplatforms to set platforms. Patches gladly accepted to fix this.'.format( + host_machine.system())) endif endif @@ -304,7 +313,7 @@ elif _egl == 'true' elif not with_shared_glapi error('EGL requires shared-glapi') elif not with_platforms - error('No platforms specified, consider -Dplatforms=drm,x11 at least') + error('No platforms specified, consider -Dplatforms=drm,x11,surfaceless at least') elif not ['disabled', 'dri'].contains(with_glx) error('EGL requires dri, but a GLX is being built without dri') endif @@ -697,10 +706,16 @@ if with_platform_haiku pre_args += '-DHAVE_HAIKU_PLATFORM' endif -prog_python2 = find_program('python2') -has_mako = run_command(prog_python2, '-c', 'import mako') +prog_python = import('python3').find_python() +has_mako = run_command( + prog_python, '-c', + ''' +from distutils.version import StrictVersion +import mako +assert StrictVersion(mako.__version__) > StrictVersion("0.8.0") + ''') if has_mako.returncode() != 0 - error('Python (2.x) mako module required to build mesa.') + error('Python (3.x) mako module >= 0.8.0 required to build mesa.') endif if cc.get_id() == 'gcc' and cc.version().version_compare('< 4.4.6') @@ -1055,6 +1070,13 @@ pre_args += '-DHAVE_ZLIB' dep_thread = dependency('threads') if dep_thread.found() and host_machine.system() != 'windows' pre_args += '-DHAVE_PTHREAD' + if cc.has_function( + 'pthread_setaffinity_np', + dependencies : dep_thread, + prefix : '#include ', + args : '-D_GNU_SOURCE') + pre_args += '-DHAVE_PTHREAD_SETAFFINITY' + endif endif if with_amd_vk or with_gallium_radeonsi or with_gallium_r600 or with_gallium_opencl dep_elf = dependency('libelf', required : false) @@ -1084,7 +1106,7 @@ _drm_amdgpu_ver = '2.4.93' _drm_radeon_ver = '2.4.71' _drm_nouveau_ver = '2.4.66' _drm_etnaviv_ver = '2.4.89' -_drm_freedreno_ver = '2.4.92' +_drm_freedreno_ver = '2.4.93' _drm_intel_ver = '2.4.75' _drm_ver = '2.4.75' @@ -1106,12 +1128,17 @@ endif # Loop over the enables versions and get the highest libdrm requirement for all # active drivers. +_drm_blame = '' foreach d : _libdrm_checks ver = get_variable('_drm_@0@_ver'.format(d[0])) if d[1] and ver.version_compare('>' + _drm_ver) _drm_ver = ver + _drm_blame = d[0] endif endforeach +if _drm_blame != '' + message('libdrm @0@ needed because @1@ has the highest requirement'.format(_drm_ver, _drm_blame)) +endif # Then get each libdrm module foreach d : _libdrm_checks @@ -1151,14 +1178,18 @@ if with_gallium_opencl llvm_optional_modules += ['coroutines', 'opencl'] endif -if with_amd_vk or with_gallium_radeonsi or with_gallium_swr - _llvm_version = '>= 5.0.0' +if with_amd_vk or with_gallium_radeonsi + _llvm_version = '>= 6.0.0' +elif with_gallium_swr + _llvm_version = '>= 6.0.0' elif with_gallium_opencl or with_gallium_r600 _llvm_version = '>= 3.9.0' else _llvm_version = '>= 3.3.0' endif +_shared_llvm = get_option('shared-llvm') + _llvm = get_option('llvm') if _llvm == 'auto' dep_llvm = dependency( @@ -1167,6 +1198,7 @@ if _llvm == 'auto' modules : llvm_modules, optional_modules : llvm_optional_modules, required : with_amd_vk or with_gallium_radeonsi or with_gallium_swr or with_gallium_opencl, + static : not _shared_llvm ) with_llvm = dep_llvm.found() elif _llvm == 'true' @@ -1175,6 +1207,7 @@ elif _llvm == 'true' version : _llvm_version, modules : llvm_modules, optional_modules : llvm_optional_modules, + static : not _shared_llvm, ) with_llvm = true else @@ -1183,10 +1216,6 @@ else endif if with_llvm _llvm_version = dep_llvm.version().split('.') - # Development versions of LLVM have an 'svn' or 'git' suffix, we don't want - # that for our version checks. - # svn suffixes are stripped by meson as of 0.43, and git suffixes are - # strippped as of 0.44, but we support older meson versions. # 3 digits versions in LLVM only started from 3.4.1 on if dep_llvm.version().version_compare('>= 3.4.1') @@ -1195,11 +1224,6 @@ if with_llvm _llvm_patch = '0' endif - if _llvm_patch.endswith('svn') - _llvm_patch = _llvm_patch.split('s')[0] - elif _llvm_patch.contains('git') - _llvm_patch = _llvm_patch.split('g')[0] - endif pre_args += [ '-DHAVE_LLVM=0x0@0@0@1@'.format(_llvm_version[0], _llvm_version[1]), '-DMESA_LLVM_VERSION_PATCH=@0@'.format(_llvm_patch), @@ -1273,7 +1297,13 @@ endif # TODO: symbol mangling if with_platform_wayland - prog_wl_scanner = find_program('wayland-scanner') + dep_wl_scanner = dependency('wayland-scanner', native: true) + prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner')) + if dep_wl_scanner.version().version_compare('>= 1.15') + wl_scanner_arg = 'private-code' + else + wl_scanner_arg = 'code' + endif dep_wl_protocols = dependency('wayland-protocols', version : '>= 1.8') dep_wayland_client = dependency('wayland-client', version : '>=1.11') dep_wayland_server = dependency('wayland-server', version : '>=1.11') @@ -1289,6 +1319,7 @@ if with_platform_wayland pre_args += ['-DHAVE_WAYLAND_PLATFORM', '-DWL_HIDE_DEPRECATED'] else prog_wl_scanner = [] + wl_scanner_arg = '' dep_wl_protocols = null_dep dep_wayland_client = null_dep dep_wayland_server = null_dep