X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=meson.build;h=505cc6c79bd6df13e5c20942ecf19b91b247133c;hb=0ef50ecc69056273cb31ad4962b0dc952f7f7fed;hp=c9ef70346a157452231f4aa0521ae31a9d3d98ce;hpb=52194ae4df18c7211cef69354a686eabc297a18d;p=mesa.git diff --git a/meson.build b/meson.build index c9ef70346a1..505cc6c79bd 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 @@ -297,7 +306,10 @@ endif _egl = get_option('egl') if _egl == 'auto' - with_egl = with_dri and with_shared_glapi and with_platforms + with_egl = ( + not ['darwin', 'windows'].contains(host_machine.system()) and + with_dri and with_shared_glapi and with_platforms + ) elif _egl == 'true' if not with_dri error('EGL requires dri') @@ -307,6 +319,8 @@ elif _egl == 'true' 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') + elif ['darwin', 'windows'].contains(host_machine.system()) + error('EGL is not available on Windows or MacOS') endif with_egl = true else @@ -560,8 +574,6 @@ elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) else _va = 'false' endif -elif _va == 'auto' - _va = 'true' endif with_gallium_va = false dep_va = null_dep @@ -697,7 +709,7 @@ if with_platform_haiku pre_args += '-DHAVE_HAIKU_PLATFORM' endif -prog_python = find_program('python3') +prog_python = import('python3').find_python() has_mako = run_command( prog_python, '-c', ''' @@ -782,9 +794,12 @@ foreach a : ['-Wall', '-Werror=implicit-function-declaration', c_args += a endif endforeach -if cc.has_argument('-Wmissing-field-initializers') - c_args += '-Wno-missing-field-initializers' -endif + +foreach a : ['missing-field-initializers', 'format-truncation'] + if cc.has_argument('-W' + a) + c_args += '-Wno-' + a + endif +endforeach c_vis_args = [] if cc.has_argument('-fvisibility=hidden') @@ -803,7 +818,7 @@ endforeach # For some reason, the test for -Wno-foo always succeeds with gcc, even if the # option is not supported. Hence, check for -Wfoo instead. -foreach a : ['non-virtual-dtor', 'missing-field-initializers'] +foreach a : ['non-virtual-dtor', 'missing-field-initializers', 'format-truncation'] if cpp.has_argument('-W' + a) cpp_args += '-Wno-' + a endif @@ -1061,6 +1076,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) @@ -1090,7 +1112,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.96' _drm_intel_ver = '2.4.75' _drm_ver = '2.4.75' @@ -1112,12 +1134,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 @@ -1154,47 +1181,40 @@ if with_gallium_opencl 'all-targets', 'linker', 'coverage', 'instrumentation', 'ipo', 'irreader', 'lto', 'option', 'objcarcopts', 'profiledata', ] - llvm_optional_modules += ['coroutines', 'opencl'] + llvm_optional_modules += ['coroutines'] endif if with_amd_vk or with_gallium_radeonsi _llvm_version = '>= 6.0.0' elif with_gallium_swr - _llvm_version = '>= 5.0.0' + _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 = null_dep +with_llvm = false +if _llvm != 'false' dep_llvm = dependency( 'llvm', version : _llvm_version, modules : llvm_modules, optional_modules : llvm_optional_modules, - required : with_amd_vk or with_gallium_radeonsi or with_gallium_swr or with_gallium_opencl, + required : ( + with_amd_vk or with_gallium_radeonsi or with_gallium_swr or + with_gallium_opencl or _llvm == 'true' + ), + static : not _shared_llvm, ) with_llvm = dep_llvm.found() -elif _llvm == 'true' - dep_llvm = dependency( - 'llvm', - version : _llvm_version, - modules : llvm_modules, - optional_modules : llvm_optional_modules, - ) - with_llvm = true -else - dep_llvm = null_dep - with_llvm = false 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') @@ -1203,11 +1223,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),