[Mesa-dev] [PATCH 2/6] meson: build glx

Dylan Baker dylan at pnwbakers.com
Wed Oct 4 22:45:16 UTC 2017


Quoting Eric Anholt (2017-10-04 14:57:23)
> Dylan Baker <dylan at pnwbakers.com> writes:
> 
> > This gets GLX and the loader building. The resulting GLX and i965 have
> > been tested on piglit and seem to work fine. This patch leaves a lot of
> > todo's in it's wake, GLX is quite complicated, and the build options
> > involved are many, and the goal at the moment is to get dri and gallium
> > drivers building.
> >
> > Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> 
> > diff --git a/meson.build b/meson.build
> > index 1824a7ea184..52ac24f59ca 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -21,7 +21,18 @@
> >  project('mesa', ['c', 'cpp'], version : '17.3.0-devel', license : 'MIT',
> >          default_options : ['c_std=c99', 'cpp_std=c++11'])
> >  
> > -with_dri3 = true  # XXX: need a switch for this
> > +# Arguments for the preprocessor, put these in a separate array from the C and
> > +# C++ (cpp in meson terminology) arguments since they need to be added to the
> > +# default arguments for both C and C++.
> > +pre_args = [
> > +  '-D__STDC_CONSTANT_MACROS',
> > +  '-D__STDC_FORMAT_MACROS',
> > +  '-D__STDC_LIMIT_MACROS',
> > +  '-DVERSION="@0@"'.format(meson.project_version()),
> > +  '-DPACKAGE_VERSION=VERSION',
> > +  '-DPACKAGE_BUGREPORT="https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa"',
> > +]
> > +
> 
> It would be nice if this hunk appeared in its end position in patch 1.

fixed

> 
> > diff --git a/meson_options.txt b/meson_options.txt
> > index 568903f1a0a..62d6b593f88 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -20,6 +20,8 @@
> >  
> >  option('platforms',      type : 'string',  value : 'x11,wayland',
> >         description : 'comma separated list of window systems to support. wayland, x11, surfaceless, drm, etc.')
> > +option('dri3',           type : 'combo',   value : 'auto', choices : ['auto', 'yes', 'no'],
> > +       description : 'comma separated list of window systems to support. wayland, x11, surfaceless, drm, etc.')
> 
> Update the description.

I apparently squashed my fixup into the wrong patch, but I've fixed that
locally.

> 
> > diff --git a/src/glx/meson.build b/src/glx/meson.build
> > new file mode 100644
> > index 00000000000..821623dc263
> > --- /dev/null
> > +++ b/src/glx/meson.build
> 
> > +dri_driver_dir = join_paths(get_option('prefix'), get_option('libdir'), 'dri')
> > +if not with_glvnd
> > +  gl_lib_name = 'GL'
> > +  gl_lib_version = '1.2'
> > +else
> > +  gl_lib_name = 'GLX_mesa'
> > +  gl_lib_version = '0'
> > +  files_libglx += files(
> > +    'g_glxglvnddispatchfuncs.c',
> > +    'g_glxglvnddispatchindices.h',
> > +    'glxglvnd.c',
> > +    'glxglvnd.h',
> > +    'glxglvnddispatchfuncs.h',
> > +  )
> > +endif
> > +
> > +gl_lib_cargs = [
> > +  '-D_RENTRANT', '-DDEFAULT_DRIVER_DIR="@0@"'.format(dri_driver_dir),
> 
> "_REENTRANT"
> 
> We probably actually don't need _REENTRANT at all -- if it's needed
> here, it's surely needed across the tree, but _GNU_SOURCE should have us
> covered.

Will we need this for windows?

> 
> > +]
> > +
> > +if dep_xf86vm != [] and dep_xf86vm.found()
> > +  gl_lib_cargs += '-DHAVE_XF86VIDMODE'
> > +endif
> > +
> > +libglx = static_library(
> > +  'glx',
> > +  [files_libglx, glx_indirect_c, glx_indirect_h, glx_indirect_init_c,
> > +   glx_indirect_size_c, glx_indirect_size_h],
> > +  include_directories : [
> > +    inc_common, inc_glapi,
> > +    include_directories('../loader', '../../include/GL/internal')
> > +  ],
> > +  c_args : [c_vis_args, gl_lib_cargs,
> > +            '-DGL_LIB_NAME="lib at 0@.so. at 1@"'.format(gl_lib_name, gl_lib_version)],
> 
> GL_LIB_NAME looks like it was libGL.so.1 on !glvnd in automake, not
> libGL.so.1.2.

yup, I just misread that.

> 
> > +  link_with : [libloader, libloader_dri3_helper, libmesa_util, libxmlconfig],
> > +  dependencies : [dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_glvnd],
> > +  build_by_default : false,
> > +)
> > +
> > +# workaround for bug #2180
> > +dummy_c = custom_target(
> > +  'dummy_c',
> > +  output : 'dummy.c',
> > +  command : [prog_touch, '@OUTPUT@'],
> > +)
> > +
> > +if with_glx == 'dri'
> > +  libgl = shared_library(
> > +    gl_lib_name,
> > +    dummy_c,  # workaround for bug #2180
> > +    include_directories : [
> > +      inc_common, inc_glapi, 
> > +      include_directories('../loader', '../../include/GL/internal')
> > +    ],
> > +    link_with : [libglapi_static, libglapi],
> > +    link_whole : libglx,
> 
> It's not clear to me why we're building a static libglx above if it's
> only used in one place.

the glx tests link with it too. Which I should build.

> 
> > +    link_args : [ld_args_bsymbolic, ld_args_gc_sections],
> 
> Missing -no-undefined?

meson enables that by default.

> 
> > diff --git a/src/mapi/glapi/gen/meson.build b/src/mapi/glapi/gen/meson.build
> > index f4c1343202c..cf1f014b4f0 100644
> > --- a/src/mapi/glapi/gen/meson.build
> > +++ b/src/mapi/glapi/gen/meson.build
> > @@ -247,7 +247,7 @@ glx_indirect_size_h = custom_target(
> >    input : ['glX_proto_size.py', 'gl_API.xml'],
> >    output : 'indirect_size.h',
> >    command : [prog_python2, '@INPUT0@', '-f', '@INPUT1@', '-m', 'size_h',
> > -             '--header-tag', '_INDIRECT_SIZE_H_'],
> > +             '--header-tag', '_INDIRECT_SIZE_H_', '--only-set'],
> >    depend_files : glx_gen_depends,
> >    capture : true,
> >  )
> > @@ -256,7 +256,8 @@ glx_indirect_size_c = custom_target(
> >    'indirect_size.c',
> >    input : ['glX_proto_size.py', 'gl_API.xml'],
> >    output : 'indirect_size.c',
> > -  command : [prog_python2, '@INPUT0@', '-f', '@INPUT1@', '-m', 'size_c'],
> > +  command : [prog_python2, '@INPUT0@', '-f', '@INPUT1@', '-m', 'size_c',
> > +             '--only-set'],
> >    depend_files : glx_gen_depends,
> >    capture : true,
> >  )
> 
> This should be in the previous patch, it looks like.

Yup.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171004/fd3496bf/attachment.sig>


More information about the mesa-dev mailing list