[Mesa-dev] [PATCH] scons: add target gallium-osmesa

Emil Velikov emil.l.velikov at gmail.com
Wed Apr 8 10:18:27 PDT 2015


Hi Olivier

Thanks for the patch !

Adding Jose to the Cc list as I believe he'll have some input on the topic.

On 3 April 2015 at 15:06,  <olivier.pena.80 at gmail.com> wrote:
> From: Olivier Pena <opena at isagri.fr>
>
> ---
>  src/gallium/SConscript                       |  5 ++++
>  src/gallium/state_trackers/osmesa/SConscript | 25 +++++++++++++++++
>  src/gallium/state_trackers/osmesa/osmesa.def | 16 +++++++++++
>  src/gallium/targets/osmesa/SConscript        | 41 ++++++++++++++++++++++++++++
>  4 files changed, 87 insertions(+)
>  create mode 100644 src/gallium/state_trackers/osmesa/SConscript
>  create mode 100644 src/gallium/state_trackers/osmesa/osmesa.def
>  create mode 100644 src/gallium/targets/osmesa/SConscript
>
Can you add the three new files into the EXTRA_DIST variable in the
relevant Makefile.am ? This way one we can build scons gallium-osmesa
from a release tarball :-)

> diff --git a/src/gallium/SConscript b/src/gallium/SConscript
> index 680ad92..eeb1c78 100644
> --- a/src/gallium/SConscript
> +++ b/src/gallium/SConscript
> @@ -60,6 +60,11 @@ SConscript([
>  ])
>
>  if not env['embedded']:
> +    SConscript([
> +        'state_trackers/osmesa/SConscript',
> +        'targets/osmesa/SConscript',
> +    ])
> +
>      if env['x11']:
>          SConscript([
>              'state_trackers/glx/xlib/SConscript',
> diff --git a/src/gallium/state_trackers/osmesa/SConscript b/src/gallium/state_trackers/osmesa/SConscript
> new file mode 100644
> index 0000000..fa7c968
> --- /dev/null
> +++ b/src/gallium/state_trackers/osmesa/SConscript
> @@ -0,0 +1,25 @@
> +import os
> +
> +Import('*')
> +
> +env = env.Clone()
> +
> +env.Append(CPPPATH = [
> +    '#src/mapi',
> +    '#src/mesa',
> +    '.',
> +])
> +
> +env.AppendUnique(CPPDEFINES = [
> +    'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
> +    'WIN32_LEAN_AND_MEAN', # http://msdn2.microsoft.com/en-us/library/6dwk3a1z.aspx
> +])
> +if not env['gles']:
> +    # prevent _glapi_* from being declared __declspec(dllimport)
> +    env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
> +
Shouldn't these be used when building for windows only ?

> +st_osmesa = env.ConvenienceLibrary(
> +    target ='st_osmesa',
> +    source = env.ParseSourceList('Makefile.sources', 'C_SOURCES'),
> +)
> +Export('st_osmesa')
> diff --git a/src/gallium/state_trackers/osmesa/osmesa.def b/src/gallium/state_trackers/osmesa/osmesa.def
> new file mode 100644
> index 0000000..e2a31ab
> --- /dev/null
> +++ b/src/gallium/state_trackers/osmesa/osmesa.def
Can we move this file next to it's only user - i.e. into targets/osmesa/ ?

> @@ -0,0 +1,16 @@
> +;DESCRIPTION 'Mesa OSMesa lib for Win32'
> +VERSION 4.1
> +
> +EXPORTS
> +       OSMesaCreateContext
> +       OSMesaCreateContextExt
> +       OSMesaDestroyContext
> +       OSMesaMakeCurrent
> +       OSMesaGetCurrentContext
> +       OSMesaPixelStore
> +       OSMesaGetIntegerv
> +       OSMesaGetDepthBuffer
> +       OSMesaGetColorBuffer
> +       OSMesaGetProcAddress
> +       OSMesaColorClamp
> +       OSMesaPostprocess
> diff --git a/src/gallium/targets/osmesa/SConscript b/src/gallium/targets/osmesa/SConscript
> new file mode 100644
> index 0000000..2c936cf
> --- /dev/null
> +++ b/src/gallium/targets/osmesa/SConscript
> @@ -0,0 +1,41 @@
> +Import('*')
> +
> +env = env.Clone()
> +
> +env.Prepend(CPPPATH = [
> +    '#src/mapi',
> +    '#src/mesa',
> +    #Dir('../../../mapi'), # src/mapi build path for python-generated GL API files/headers
> +])
> +
> +sources = [
> +    'target.c',
> +]
> +sources += ['#src/gallium/state_trackers/osmesa/osmesa.def']
> +
Afaict this should be included only if the target is Windows.

> +drivers = []
> +
> +if env['llvm']:
> +    env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
> +    env.Append(CPPDEFINES = 'GALLIUM_TRACE')
> +    drivers += [llvmpipe]
> +else:
> +    env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
> +    env.Append(CPPDEFINES = 'GALLIUM_TRACE')
> +    drivers += [softpipe]
> +
One should include softpipe unconditionally as we can switch between
llvmpipe and softpipe at runtime.

> +if env['platform'] == 'windows':
> +    env.AppendUnique(CPPDEFINES = [
> +        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
> +    ])
> +    if not env['gles']:
> +        # prevent _glapi_* from being declared __declspec(dllimport)
> +        env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
> +
Don't think you need this if block.

> +gallium_osmesa = env.SharedLibrary(
> +    target ='osmesa',
> +    source = sources,
> +        LIBS = drivers + st_osmesa + ws_null + glapi + mesa + gallium + trace + glsl + mesautil + env['LIBS'],
How about we move this before the SharedLibrary construct and use
env.Prepend(LIBS =...  like other places in mesa ?

Thanks
Emil


More information about the mesa-dev mailing list