X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=meson.build;h=8cf67b81715bc549d72130374eee98f46ac2c61e;hb=bc3d16e633fd27b05dfdcda0b7efb000b2c35ed6;hp=5c22e80ca5c7d3a65db5b03b635b103b2f81051e;hpb=992af0a4b8224bdb4809e01c2f00d2f32546aee5;p=mesa.git diff --git a/meson.build b/meson.build index 5c22e80ca5c..8cf67b81715 100644 --- a/meson.build +++ b/meson.build @@ -48,6 +48,10 @@ with_libunwind = get_option('libunwind') with_asm = get_option('asm') with_osmesa = get_option('osmesa') with_swr_arches = get_option('swr-arches').split(',') +with_tools = get_option('tools').split(',') +if with_tools.contains('all') + with_tools = ['freedreno', 'glsl', 'intel', 'nir', 'nouveau'] +endif if get_option('texture-float') pre_args += '-DTEXTURE_FLOAT_ENABLED' message('WARNING: Floating-point texture enabled. Please consult docs/patents.txt and your lawyer before building mesa.') @@ -57,6 +61,10 @@ dri_drivers_path = get_option('dri-drivers-path') if dri_drivers_path == '' dri_drivers_path = join_paths(get_option('libdir'), 'dri') endif +dri_search_path = get_option('dri-search-path') +if dri_search_path == '' + dri_search_path = join_paths(get_option('prefix'), dri_drivers_path) +endif with_gles1 = get_option('gles1') with_gles2 = get_option('gles2') @@ -88,13 +96,16 @@ with_dri_nouveau = false with_dri_swrast = false _drivers = get_option('dri-drivers') if _drivers == 'auto' - # TODO: PPC, Sparc - if not ['darwin', 'windows'].contains(host_machine.system()) + if host_machine.system() == 'linux' + # TODO: PPC, Sparc if ['x86', 'x86_64'].contains(host_machine.cpu_family()) _drivers = 'i915,i965,r100,r200,nouveau' else error('Unknown architecture. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.') 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.') endif @@ -128,7 +139,7 @@ with_gallium_virgl = false with_gallium_swr = false _drivers = get_option('gallium-drivers') if _drivers == 'auto' - if not ['darwin', 'windows'].contains(host_machine.system()) + if host_machine.system() == 'linux' # TODO: PPC, Sparc if ['x86', 'x86_64'].contains(host_machine.cpu_family()) _drivers = 'r300,r600,radeonsi,nouveau,virgl,svga,swrast' @@ -137,6 +148,8 @@ if _drivers == 'auto' else error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.') 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.') endif @@ -166,15 +179,17 @@ with_amd_vk = false with_any_vk = false _vulkan_drivers = get_option('vulkan-drivers') if _vulkan_drivers == 'auto' - if not ['darwin', 'windows'].contains(host_machine.system()) + if host_machine.system() == 'linux' if host_machine.cpu_family().startswith('x86') _vulkan_drivers = 'amd,intel' else error('Unknown architecture. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.') endif - else + 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.') endif endif if _vulkan_drivers != '' @@ -229,8 +244,12 @@ _platforms = get_option('platforms') if _platforms == 'auto' if system_has_kms_drm _platforms = 'x11,wayland,drm,surfaceless' + elif ['darwin', 'windows', 'cygwin'].contains(host_machine.system()) + _platforms = 'x11,surfaceless' + elif ['haiku'].contains(host_machine.system()) + _platforms = 'haiku' else - error('Unknown OS, no platforms enabled. Patches gladly accepted to fix this.') + error('Unknown OS. Please pass -Dplatforms to set platforms. Patches gladly accepted to fix this.') endif endif if _platforms != '' @@ -239,6 +258,7 @@ if _platforms != '' with_platform_x11 = _split.contains('x11') with_platform_wayland = _split.contains('wayland') with_platform_drm = _split.contains('drm') + with_platform_haiku = _split.contains('haiku') with_platform_surfaceless = _split.contains('surfaceless') egl_native_platform = _split[0] endif @@ -247,6 +267,8 @@ with_glx = get_option('glx') if with_glx == 'auto' if with_dri with_glx = 'dri' + elif with_platform_haiku + with_glx = 'disabled' elif with_gallium # Even when building just gallium drivers the user probably wants dri with_glx = 'dri' @@ -362,7 +384,7 @@ if with_any_vk and (with_platform_x11 and not with_dri3) error('Vulkan drivers require dri3 for X11 support') endif if with_dri or with_gallium - if with_glx == 'disabled' and not with_egl + if with_glx == 'disabled' and not with_egl and not with_platform_haiku error('building dri or gallium drivers require at least one window system') endif endif @@ -409,37 +431,32 @@ if vdpau_drivers_path == '' vdpau_drivers_path = join_paths(get_option('libdir'), 'vdpau') endif -dep_xvmc = [] _xvmc = get_option('gallium-xvmc') -if _xvmc == 'auto' - if not system_has_kms_drm - with_gallium_xvmc = false - elif not with_platform_x11 - with_gallium_xvmc = false - elif not (with_gallium_r600 or with_gallium_nouveau) - with_gallium_xvmc = false +if not system_has_kms_drm + if _xvmc == 'true' + error('XVMC state tracker can only be build on unix-like OSes.') else - dep_xvmc = dependency('xvmc', version : '>= 1.0.6', required : false) - with_gallium_xvmc = dep_xvmc.found() + _xvmc = 'false' endif -elif _xvmc == 'true' - if not system_has_kms_drm - error('XVMC state tracker can only be build on DRM/KMS OSes.') - elif not with_platform_x11 +elif not with_platform_x11 + if _xvmc == 'true' error('XVMC state tracker requires X11 support.') - with_gallium_xvmc = false - elif not (with_gallium_r600 or with_gallium_nouveau) + else + _xvmc = 'false' + endif +elif not (with_gallium_r600 or with_gallium_nouveau) + if _xvmc == 'true' error('XVMC state tracker requires at least one of the following gallium drivers: r600, nouveau.') + else + _xvmc = 'false' endif - dep_xvmc = dependency('xvmc', version : '>= 1.0.6') - with_gallium_xvmc = true -else - with_gallium_xvmc = false +elif _xvmc == 'auto' + _xvmc = 'true' endif +with_gallium_xvmc = _xvmc == 'true' +dep_xvmc = [] if with_gallium_xvmc - dep_xvmc = declare_dependency( - compile_args : run_command(prog_pkgconfig, ['xvmc', '--cflags']).stdout().split() - ) + dep_xvmc = dependency('xvmc', version : '>= 1.0.6') endif xvmc_drivers_path = get_option('xvmc-libs-path') @@ -447,32 +464,32 @@ if xvmc_drivers_path == '' xvmc_drivers_path = get_option('libdir') endif -dep_omx = [] _omx = get_option('gallium-omx') -if _omx == 'auto' - if not system_has_kms_drm - with_gallium_omx = false - elif not with_platform_x11 - with_gallium_omx = false - elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) - with_gallium_omx = false +if not system_has_kms_drm + if _omx == 'true' + error('OMX state tracker can only be built on unix-like OSes.') else - dep_omx = dependency('libomxil-bellagio', required : false) - with_gallium_omx = dep_omx.found() + _omx = 'false' endif -elif _omx == 'true' - if not system_has_kms_drm - error('OMX state tracker can only be built on DRM/KMS OSes.') - elif not (with_platform_x11 or with_platform_drm) +elif not (with_platform_x11 or with_platform_drm) + if _omx == 'true' error('OMX state tracker requires X11 or drm platform support.') - with_gallium_omx = false - elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + else + _omx = 'false' + endif +elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + if _omx == 'true' error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') + else + _omx = 'false' endif +elif _omx == 'auto' + _omx = 'true' +endif +with_gallium_omx = _omx == 'true' +dep_omx = [] +if with_gallium_omx dep_omx = dependency('libomxil-bellagio') - with_gallium_omx = true -else - with_gallium_omx = false endif omx_drivers_path = get_option('omx-libs-path') @@ -499,41 +516,34 @@ if with_gallium_omx endif endif endif -if with_gallium_omx - dep_omx = declare_dependency( - compile_args : run_command(prog_pkgconfig, ['libomxil-bellagio', '--cflags']).stdout().split() - ) -endif -dep_va = [] _va = get_option('gallium-va') -if _va == 'auto' - if not system_has_kms_drm - with_gallium_va = false - elif not with_platform_x11 - with_gallium_va = false - elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) - with_gallium_va = false +if not system_has_kms_drm + if _va == 'true' + error('VA state tracker can only be built on unix-like OSes.') else - dep_va = dependency('libva', version : '>= 0.38.0', required : false) - with_gallium_va = dep_va.found() + _va = 'false' endif -elif _va == 'true' - if not system_has_kms_drm - error('VA state tracker can only be built on DRM/KMS OSes.') - elif not (with_platform_x11 or with_platform_drm) +elif not (with_platform_x11 or with_platform_drm) + if _va == 'true' error('VA state tracker requires X11 or drm or wayland platform support.') - with_gallium_va = false - elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + else + _va = 'false' + endif +elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + if _va == 'true' error('VA state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') + else + _va = 'false' endif - dep_va = dependency('libva', version : '>= 0.38.0') - with_gallium_va = true -else - with_gallium_va = false +elif _va == 'auto' + _va = 'true' endif +with_gallium_va = _va == 'true' +dep_va = [] if with_gallium_va - dep_va = declare_dependency( + dep_va = dependency('libva', version : '>= 0.38.0') + dep_va_headers = declare_dependency( compile_args : run_command(prog_pkgconfig, ['libva', '--cflags']).stdout().split() ) endif @@ -544,26 +554,21 @@ if va_drivers_path == '' endif _xa = get_option('gallium-xa') -if _xa == 'auto' - if not system_has_kms_drm - with_gallium_xa = false - elif not (with_gallium_nouveau or with_gallium_freedreno or with_gallium_i915 - or with_gallium_svga) - with_gallium_xa = false +if not system_has_kms_drm + if _xa == 'true' + error('XA state tracker can only be built on unix-like OSes.') else - with_gallium_xa = true + _xa = 'false' endif -elif _xa == 'true' - if not system_has_kms_drm - error('XA state tracker can only be built on DRM/KMS OSes.') - elif not (with_gallium_nouveau or with_gallium_freedreno or with_gallium_i915 - or with_gallium_svga) +elif not (with_gallium_nouveau or with_gallium_freedreno or with_gallium_i915 + or with_gallium_svga) + if _xa == 'true' error('XA state tracker requires at least one of the following gallium drivers: nouveau, freedreno, i915, svga.') + else + _xa = 'false' endif - with_gallium_xa = true -else - with_gallium_xa = false endif +with_gallium_xa = _xa != 'false' d3d_drivers_path = get_option('d3d-drivers-path') if d3d_drivers_path == '' @@ -613,6 +618,8 @@ if with_platform_x11 endif if with_dri_platform == 'drm' pre_args += '-DGLX_USE_DRM' + elif with_dri_platform == 'apple' + pre_args += '-DGLX_USE_APPLEGL' elif with_dri_platform == 'windows' pre_args += '-DGLX_USE_WINDOWSGL' endif @@ -638,6 +645,9 @@ if with_platform_android ] pre_args += '-DHAVE_ANDROID_PLATFORM' endif +if with_platform_haiku + pre_args += '-DHAVE_HAIKU_PLATFORM' +endif prog_python2 = find_program('python2') has_mako = run_command(prog_python2, '-c', 'import mako') @@ -903,6 +913,10 @@ if cc.links('int main() { return 0; }', name : 'dynamic-list') with_ld_dynamic_list = true endif +ld_args_build_id = [] +if build_machine.system() != 'darwin' + ld_args_build_id += '-Wl,--build-id=sha1' +endif # check for dl support if cc.has_function('dlopen') @@ -966,7 +980,7 @@ dep_libdrm_nouveau = [] dep_libdrm_etnaviv = [] dep_libdrm_freedreno = [] if with_amd_vk or with_gallium_radeonsi - dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.89') + dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.90') endif if (with_gallium_radeonsi or with_dri_r100 or with_dri_r200 or with_gallium_r300 or with_gallium_r600) @@ -997,15 +1011,23 @@ if with_gallium_opencl # TODO: optional modules endif +if with_amd_vk or with_gallium_radeonsi or with_gallium_swr + _llvm_version = '>= 4.0.0' +elif with_gallium_opencl or with_gallium_r600 + _llvm_version = '>= 3.9.0' +else + _llvm_version = '>= 3.3.0' +endif + _llvm = get_option('llvm') if _llvm == 'auto' dep_llvm = dependency( - 'llvm', version : '>= 3.9.0', modules : llvm_modules, + 'llvm', version : _llvm_version, modules : llvm_modules, required : with_amd_vk or with_gallium_radeonsi or with_gallium_swr or with_gallium_opencl, ) with_llvm = dep_llvm.found() elif _llvm == 'true' - dep_llvm = dependency('llvm', version : '>= 3.9.0', modules : llvm_modules) + dep_llvm = dependency('llvm', version : _llvm_version, modules : llvm_modules) with_llvm = true else dep_llvm = [] @@ -1028,7 +1050,7 @@ if with_llvm '-DMESA_LLVM_VERSION_PATCH=@0@'.format(_llvm_patch), ] elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr - error('The following drivers requires LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') + error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') endif dep_glvnd = []