X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=meson.build;h=1f6658bbacf98ca152aae84a2fc4bc954a67b4d7;hb=8fe6abd964ad1ff9c749fe50031dfdb9f18cae2a;hp=6e9a799704ecf606b6895a53f1bbb387f414350f;hpb=d5597f09c6a18a3ed2dd76657dd2e60806a6e4b2;p=mesa.git diff --git a/meson.build b/meson.build index 6e9a799704e..1f6658bbacf 100644 --- a/meson.build +++ b/meson.build @@ -21,7 +21,9 @@ project( 'mesa', ['c', 'cpp'], - version : '17.3.0-devel', + version : run_command( + [find_program('python', 'python2', 'python3'), 'bin/meson_get_version.py'] + ).stdout(), license : 'MIT', meson_version : '>= 0.42', default_options : ['buildtype=debugoptimized', 'c_std=c99', 'cpp_std=c++11'] @@ -90,6 +92,18 @@ with_dri_r200 = false 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 ['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 + else + error('Unknown OS. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.') + endif +endif if _drivers != '' _split = _drivers.split(',') with_dri_i915 = _split.contains('i915') @@ -112,6 +126,20 @@ with_gallium_vc5 = false with_gallium_etnaviv = false with_gallium_imx = false _drivers = get_option('gallium-drivers') +if _drivers == 'auto' + if not ['darwin', 'windows'].contains(host_machine.system()) + # TODO: PPC, Sparc + if ['x86', 'x86_64'].contains(host_machine.cpu_family()) + _drivers = 'radeonsi,nouveau,swrast' + elif ['arm', 'aarch64'].contains(host_machine.cpu_family()) + _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,swrast' + else + error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.') + endif + else + error('Unknown OS. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.') + endif +endif if _drivers != '' _split = _drivers.split(',') with_gallium_pl111 = _split.contains('pl111') @@ -124,15 +152,6 @@ if _drivers != '' with_gallium_etnaviv = _split.contains('etnaviv') with_gallium_imx = _split.contains('imx') with_gallium = true - with_dri = true -endif - -if not (with_dri or with_gallium) - with_gles1 = false - with_gles2 = false - with_opengl = false - with_any_opengl = false - with_shared_glapi = false endif if with_dri_swrast and with_gallium_softpipe @@ -167,6 +186,31 @@ if _platforms != '' egl_native_platform = _split[0] endif +with_glx = get_option('glx') +if with_glx == 'auto' + if with_dri + with_glx = 'dri' + elif with_gallium + # Even when building just gallium drivers the user probably wants dri + with_glx = 'dri' + with_dri = true + elif with_platform_x11 and with_any_opengl and not with_any_vk + # The automatic behavior should not be to turn on xlib based glx when + # building only vulkan drivers + with_glx = 'xlib' + else + with_glx = 'disabled' + endif +endif + +if not (with_dri or with_gallium or with_glx == 'xlib' or with_glx == 'gallium-xlib') + with_gles1 = false + with_gles2 = false + with_opengl = false + with_any_opengl = false + with_shared_glapi = false +endif + with_gbm = get_option('gbm') if with_gbm == 'auto' and with_dri # TODO: or gallium with_gbm = host_machine.system() == 'linux' @@ -201,7 +245,6 @@ if with_egl and with_gallium_radeonsi and not (with_platform_drm or with_platfor endif pre_args += '-DGLX_USE_TLS' -with_glx = get_option('glx') if with_glx != 'disabled' if not (with_platform_x11 and with_any_opengl) if with_glx == 'auto' @@ -212,27 +255,27 @@ if with_glx != 'disabled' elif with_glx == 'gallium-xlib' if not with_gallium error('Gallium-xlib based GLX requires at least one gallium driver') + elif not with_gallium_softpipe + error('Gallium-xlib based GLX requires softpipe or llvmpipe.') elif with_dri error('gallium-xlib conflicts with any dri driver') endif - elif with_glx == 'dri' and not with_dri - error('dri based GLX requires at least one DRI driver') - elif with_glx == 'auto' + elif with_glx == 'xlib' if with_dri - with_glx = 'dri' - elif with_gallium - with_glx = 'gallium-xlib' - elif with_platform_x11 and with_any_opengl - with_glx = 'xlib' - else - with_glx = 'disabled' + error('xlib conflicts with any dri driver') endif + elif with_glx == 'dri' and not with_dri + error('dri based GLX requires at least one DRI driver') endif endif with_glvnd = get_option('glvnd') -if with_glvnd and with_glx != 'dri' - message('glvnd requires dri based glx') +if with_glvnd + if with_glx == 'xlib' or with_glx == 'gallium-xlib' + error('Cannot build glvnd support for GLX that is not DRI based.') + elif with_glx == 'disabled' and not with_egl + error('glvnd requires DRI based GLX and/or EGL') + endif endif # TODO: toggle for this @@ -246,6 +289,18 @@ with_intel_vk = false 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.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 + # No vulkan driver supports windows or macOS currently + _vulkan_drivers = '' + endif +endif if _vulkan_drivers != '' _split = _vulkan_drivers.split(',') with_intel_vk = _split.contains('intel') @@ -301,12 +356,8 @@ if with_platform_x11 if with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm') pre_args += '-DHAVE_X11_PLATFORM' endif - if with_glx == 'xlib' - # TODO - error('TODO') - elif with_glx == 'gallium-xlib' - # TODO - error('TODO') + if with_glx == 'xlib' or with_glx == 'gallium-xlib' + pre_args += '-DUSE_XSHM' else pre_args += '-DGLX_INDIRECT_RENDERING' if with_glx_direct @@ -349,8 +400,8 @@ if cc.get_id() == 'gcc' and cc.version().version_compare('< 4.4.6') error('When using GCC, version 4.4.6 or later is required.') endif -# Define DEBUG for debug and debugoptimized builds -if get_option('buildtype').startswith('debug') +# Define DEBUG for debug builds only (debugoptimized is not included on this one) +if get_option('buildtype') == 'debug' pre_args += '-DDEBUG' endif @@ -485,8 +536,8 @@ endif # FIXME: enable asm when cross compiler # This is doable (autotools does it), but it's not of immediate concern -if meson.is_cross_build() - message('Cross compiling, disabling asm') +if meson.is_cross_build() and host_machine.cpu_family().startswith('x86') + message('Cross compiling, disabling x86/x86_64 asm') with_asm = false endif @@ -524,7 +575,7 @@ elif cc.has_header_symbol('sys/mkdev.h', 'major') pre_args += '-DMAJOR_IN_MKDEV' endif -foreach h : ['xlocale.h', 'sys/sysctl.h'] +foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h'] if cc.has_header(h) pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify()) endif @@ -657,10 +708,11 @@ llvm_modules = ['bitwriter', 'engine', 'mcdisassembler', 'mcjit'] if with_amd_vk llvm_modules += ['amdgpu', 'bitreader', 'ipo'] endif -dep_llvm = dependency( - 'llvm', version : '>= 3.9.0', required : with_amd_vk, modules : llvm_modules, -) +dep_llvm = [] if with_llvm + dep_llvm = dependency( + 'llvm', version : '>= 3.9.0', required : with_amd_vk, modules : llvm_modules, + ) if dep_llvm.found() _llvm_version = dep_llvm.version().split('.') # Development versions of LLVM have an 'svn' suffix, we don't want that for @@ -690,7 +742,6 @@ if with_glvnd pre_args += '-DUSE_LIBGLVND=1' endif -# TODO: make this conditional if with_valgrind != 'false' dep_valgrind = dependency('valgrind', required : with_valgrind == 'true') if dep_valgrind.found() @@ -786,7 +837,11 @@ dep_xcb_sync = [] dep_xcb_xfixes = [] dep_xshmfence = [] if with_platform_x11 - if with_glx == 'dri' and with_dri_platform == 'drm' + if with_glx == 'xlib' or with_glx == 'gallium-xlib' + dep_x11 = dependency('x11') + dep_xext = dependency('xext') + dep_xcb = dependency('xcb') + elif with_glx == 'dri' and with_dri_platform == 'drm' dep_x11 = dependency('x11') dep_xext = dependency('xext') dep_xdamage = dependency('xdamage', version : '>= 1.1') @@ -807,7 +862,7 @@ if with_platform_x11 dep_xshmfence = dependency('xshmfence', version : '>= 1.1') endif endif - if with_glx != 'disabled' + if with_glx == 'dri' dep_dri2proto = dependency('dri2proto', version : '>= 2.8') dep_glproto = dependency('glproto', version : '>= 1.4.14') endif