[Mesa-dev] [PATCH 2/4] meson: disable x86 asm in fewer cases.

Eric Engestrom eric.engestrom at imgtec.com
Thu Nov 16 11:46:04 UTC 2017


On Wednesday, 2017-11-15 17:11:00 -0800, Dylan Baker wrote:
> This patch allows building asm for x86 on x86_64 platforms, when the
> operating system is the same. Previously cross compile always turned off
> assembly. This allows using a cross file to cross compile x86 binaries
> on x86_64 with asm.
> 
> This could probably be relaxed further thanks to meson's "exe_wrapper",
> which is way to specify an emulator or compatibility layer (wine) that
> can run the foreign binaries on the build system. Since the meson build
> at this point only supports building on Linux I can't test this and I
> don't want to write/enable code that cannot even be build tested.
> 
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  meson.build | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 0d201c711a0..261c4753427 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -554,13 +554,16 @@ endif
>  
>  # TODO: texture-float (gallium/mesa only)
>  
> -# TODO: cross-compiling. I don't think this is relavent to meson
> -
> -# FIXME: enable asm when cross compiler
> -# This is doable (autotools does it), but it's not of immediate concern
> -if meson.is_cross_build() and host_machine.cpu_family().startswith('x86')
> -  message('Cross compiling, disabling x86/x86_64 asm')
> -  with_asm = false
> +# Building x86 assembly code requires running x86 binaries. It is possible for
> +# x86_64 OSes to run x86 binaries, so don't disable asm in those cases
> +# TODO: it should be possible to use an exe_wrapper to run the binary durring

"during"

> +# the build. 
> +if meson.is_cross_build() 
> +  if (not (build_machine.cpu_family() == 'x86_64' and host_machine.cpu_family() == 'x86')
> +      and build_machine.system() == host_machine.system())
> +    message('Cross compiling to x86 from non-x86, disabling asm')
> +    with_asm = false
> +  endif

This looks off to me.
Shouldn't the `and build_os==host_os` be `or not build_os==host_os`?

In other words, if cross-building on the same os from 64bit to 32bit,
allow asm, and otherwise disable it?

If so, you could factor the `not` out, and it would be:
  if not (build_os==host_os and build==64bit and host==32bit)
    with_asm = false

>  endif
>  
>  with_asm_arch = ''
> -- 
> 2.15.0
> 


More information about the mesa-dev mailing list