diff mbox

[1/3] Add meson build system

Message ID 0c8e7e8213a8d41d84c31067056337c2365ece8d.1515015012.git-series.dylan@pnwbakers.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dylan Baker Jan. 3, 2018, 9:31 p.m. UTC
This patch adds a complete meson build system, including tests and
install. It has the necessary hooks to allow it be used as a subproject
for other meson based builds such as mesa.

Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
---
 .editorconfig               |   4 +-
 amdgpu/.editorconfig        |   5 +-
 amdgpu/meson.build          |  70 +++++++-
 data/meson.build            |  27 +++-
 etnaviv/meson.build         |  64 ++++++-
 exynos/meson.build          |  53 +++++-
 freedreno/meson.build       |  82 ++++++++-
 intel/meson.build           | 111 +++++++++++-
 libkms/meson.build          |  75 +++++++-
 man/meson.build             |  66 ++++++-
 meson.build                 | 378 +++++++++++++++++++++++++++++++++++++-
 meson_options.txt           |  38 ++++-
 nouveau/meson.build         |  65 ++++++-
 omap/meson.build            |  53 +++++-
 radeon/meson.build          |  65 ++++++-
 tegra/meson.build           |  52 +++++-
 tests/amdgpu/meson.build    |  40 ++++-
 tests/etnaviv/meson.build   |  54 +++++-
 tests/exynos/meson.build    |  54 +++++-
 tests/kms/meson.build       |  54 +++++-
 tests/kmstest/meson.build   |  28 +++-
 tests/meson.build           |  85 ++++++++-
 tests/modeprint/meson.build |  29 +++-
 tests/nouveau/meson.build   |  30 +++-
 tests/proptest/meson.build  |  30 +++-
 tests/radeon/meson.build    |  27 +++-
 tests/tegra/meson.build     |  27 +++-
 tests/util/meson.build      |  37 ++++-
 tests/vbltest/meson.build   |  28 +++-
 vc4/meson.build             |  28 +++-
 30 files changed, 1759 insertions(+)
 create mode 100644 amdgpu/meson.build
 create mode 100644 data/meson.build
 create mode 100644 etnaviv/meson.build
 create mode 100644 exynos/meson.build
 create mode 100644 freedreno/meson.build
 create mode 100644 intel/meson.build
 create mode 100644 libkms/meson.build
 create mode 100644 man/meson.build
 create mode 100644 meson.build
 create mode 100644 meson_options.txt
 create mode 100644 nouveau/meson.build
 create mode 100644 omap/meson.build
 create mode 100644 radeon/meson.build
 create mode 100644 tegra/meson.build
 create mode 100644 tests/amdgpu/meson.build
 create mode 100644 tests/etnaviv/meson.build
 create mode 100644 tests/exynos/meson.build
 create mode 100644 tests/kms/meson.build
 create mode 100644 tests/kmstest/meson.build
 create mode 100644 tests/meson.build
 create mode 100644 tests/modeprint/meson.build
 create mode 100644 tests/nouveau/meson.build
 create mode 100644 tests/proptest/meson.build
 create mode 100644 tests/radeon/meson.build
 create mode 100644 tests/tegra/meson.build
 create mode 100644 tests/util/meson.build
 create mode 100644 tests/vbltest/meson.build
 create mode 100644 vc4/meson.build

Comments

Dylan Baker Jan. 3, 2018, 10:18 p.m. UTC | #1
Quoting Dylan Baker (2018-01-03 13:31:28)
<snip>
> diff --git a/freedreno/meson.build b/freedreno/meson.build
> new file mode 100644
> index 0000000..47d6e44
> --- /dev/null
> +++ b/freedreno/meson.build
> @@ -0,0 +1,82 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_freedreno = files(
> +  'freedreno_device.c',
> +  'freedreno_pipe.c',
> +  'freedreno_priv.h',
> +  'freedreno_ringbuffer.c',
> +  'freedreno_bo.c',
> +  'freedreno_bo_cache.c',
> +  'msm/msm_bo.c',
> +  'msm/msm_device.c',
> +  'msm/msm_drm.h',
> +  'msm/msm_pipe.c',
> +  'msm/msm_priv.h',
> +  'msm/msm_ringbuffer.c',
> +)
> +
> +if with_freedreno_kgsl != 'false'

This should be "if with_freedreno_kgsl" I've fixed that locally.

> +  files_freedreno += files(
> +    'kgsl/kgsl_bo.c',
> +    'kgsl/kgsl_device.c',
> +    'kgsl/kgsl_drm.h',
> +    'kgsl/kgsl_pipe.c',
> +    'kgsl/kgsl_priv.h',
> +    'kgsl/kgsl_ringbuffer.c',
> +    'kgsl/msm_kgsl.h',
> +  )
> +endif

<snip>
Igor Gnatenko Jan. 3, 2018, 11:22 p.m. UTC | #2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On Wed, 2018-01-03 at 13:31 -0800, Dylan Baker wrote:
> This patch adds a complete meson build system, including tests and
> install. It has the necessary hooks to allow it be used as a subproject
> for other meson based builds such as mesa.

It is failing to build with (autofoo-based builds fine):

[25/109] cc  -Iamdgpu/drm_amdgpu@sha -Iamdgpu -I../amdgpu -I. -I../
- -I../include/drm -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64
- -std=gnu99 -DHAVE_CONFIG_H -O2 -g -Wall -Werror=format-security -Wp,-
D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-
size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
- -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fPIC -Wall
- -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith
- -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
- -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-
aliasing=2 -Winit-self -Winline -Wshadow -Wdeclaration-after-statement -Wold-
style-definition -Wno-unused-parameter -Wno-attributes -Wno-long-long -Wno-
missing-field-initializers '-DAMDGPU_ASIC_ID_TABLE="share/amdgpu.ids"' -MMD -MQ
'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -MF 'amdgpu/drm_amdgpu@sha/amdgpu_as
ic_id.c.o.d' -o 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -c
../amdgpu/amdgpu_asic_id.c
FAILED: amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o 
cc  -Iamdgpu/drm_amdgpu@sha -Iamdgpu -I../amdgpu -I. -I../ -I../include/drm
- -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=gnu99
- -DHAVE_CONFIG_H -O2 -g -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
- -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-
switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
- -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fPIC -Wall
- -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith
- -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
- -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-
aliasing=2 -Winit-self -Winline -Wshadow -Wdeclaration-after-statement -Wold-
style-definition -Wno-unused-parameter -Wno-attributes -Wno-long-long -Wno-
missing-field-initializers '-DAMDGPU_ASIC_ID_TABLE="share/amdgpu.ids"' -MMD -MQ
'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -MF 'amdgpu/drm_amdgpu@sha/amdgpu_as
ic_id.c.o.d' -o 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -c
../amdgpu/amdgpu_asic_id.c
../amdgpu/amdgpu_asic_id.c: In function ‘amdgpu_parse_asic_ids’:
../amdgpu/amdgpu_asic_id.c:122:26: error: ‘AMDGPU_ASIC_ID_TABLE_NUM_ENTRIES’
undeclared (first use in this function); did you mean
‘AMDGPU_VCE_CLOCK_TABLE_ENTRIES’?
  size_t table_max_size = AMDGPU_ASIC_ID_TABLE_NUM_ENTRIES;
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          AMDGPU_VCE_CLOCK_TABLE_ENTRIES
../amdgpu/amdgpu_asic_id.c:122:26: note: each undeclared identifier is reported
only once for each function it appears in

[...]

> diff --git a/freedreno/meson.build b/freedreno/meson.build
> new file mode 100644
> index 0000000..47d6e44
> --- /dev/null
> +++ b/freedreno/meson.build
> @@ -0,0 +1,82 @@
> [...]
> +if with_freedreno_kgsl != 'false'

Booleans should not compare with strings, so do just `if with_freedreno_kgsl`.

Submitted meson RFE to warn: https://github.com/mesonbuild/meson/issues/2870.

> +  files_freedreno += files(
> +    'kgsl/kgsl_bo.c',
> +    'kgsl/kgsl_device.c',
> +    'kgsl/kgsl_drm.h',
> +    'kgsl/kgsl_pipe.c',
> +    'kgsl/kgsl_priv.h',
> +    'kgsl/kgsl_ringbuffer.c',
> +    'kgsl/msm_kgsl.h',
> +  )
> +endif

[...]

> diff --git a/meson_options.txt b/meson_options.txt
> new file mode 100644
> index 0000000..7c2fa4f
> --- /dev/null
> +++ b/meson_options.txt
> @@ -0,0 +1,38 @@
> [...]
> +option('libkms',      type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('intel',       type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('radeon',      type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('nouveau',     type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true',
> 'false', 'auto'])
> +option('omap',        type : 'combo', value : 'false', choices : ['true',
> 'false', 'auto'])
> +option('exynos',      type : 'combo', value : 'false', choices : ['true',
> 'false', 'auto'])
> +option('freedreno',   type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('tegra',       type : 'combo', value : 'false', choices : ['true',
> 'false', 'auto'])
> +option('vc4',         type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('etnaviv',     type : 'combo', value : 'false', choices : ['true',
> 'false', 'auto'])
> +option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('man_pages',   type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('valgrind',    type : 'combo', value : 'auto',  choices : ['true',
> 'false', 'auto'])
> +option('freedreno-kgls',        type : 'boolean', value : false)

Probably using `_` would be better for consistency..

Also, option should be named kgsl, not kgls (note sl vs ls).

> +option('install_test_programs', type : 'boolean', value : false)
> +option('udev',                  type : 'boolean', value : false)

Having description on all those options would be extremely useful 
Dylan Baker Jan. 4, 2018, 12:02 a.m. UTC | #3
Quoting Igor Gnatenko (2018-01-03 15:22:36)
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> On Wed, 2018-01-03 at 13:31 -0800, Dylan Baker wrote:
> > This patch adds a complete meson build system, including tests and
> > install. It has the necessary hooks to allow it be used as a subproject
> > for other meson based builds such as mesa.
> 
> It is failing to build with (autofoo-based builds fine):
> 
> [25/109] cc  -Iamdgpu/drm_amdgpu@sha -Iamdgpu -I../amdgpu -I. -I../
> - -I../include/drm -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64
> - -std=gnu99 -DHAVE_CONFIG_H -O2 -g -Wall -Werror=format-security -Wp,-
> D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-
> size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
> - -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fPIC -Wall
> - -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith
> - -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
> - -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-
> aliasing=2 -Winit-self -Winline -Wshadow -Wdeclaration-after-statement -Wold-
> style-definition -Wno-unused-parameter -Wno-attributes -Wno-long-long -Wno-
> missing-field-initializers '-DAMDGPU_ASIC_ID_TABLE="share/amdgpu.ids"' -MMD -MQ
> 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -MF 'amdgpu/drm_amdgpu@sha/amdgpu_as
> ic_id.c.o.d' -o 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -c
> ../amdgpu/amdgpu_asic_id.c
> FAILED: amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o 
> cc  -Iamdgpu/drm_amdgpu@sha -Iamdgpu -I../amdgpu -I. -I../ -I../include/drm
> - -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=gnu99
> - -DHAVE_CONFIG_H -O2 -g -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
> - -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-
> switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
> - -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fPIC -Wall
> - -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith
> - -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations 
> - -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-
> aliasing=2 -Winit-self -Winline -Wshadow -Wdeclaration-after-statement -Wold-
> style-definition -Wno-unused-parameter -Wno-attributes -Wno-long-long -Wno-
> missing-field-initializers '-DAMDGPU_ASIC_ID_TABLE="share/amdgpu.ids"' -MMD -MQ
> 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -MF 'amdgpu/drm_amdgpu@sha/amdgpu_as
> ic_id.c.o.d' -o 'amdgpu/drm_amdgpu@sha/amdgpu_asic_id.c.o' -c
> ../amdgpu/amdgpu_asic_id.c
> ../amdgpu/amdgpu_asic_id.c: In function ‘amdgpu_parse_asic_ids’:
> ../amdgpu/amdgpu_asic_id.c:122:26: error: ‘AMDGPU_ASIC_ID_TABLE_NUM_ENTRIES’
> undeclared (first use in this function); did you mean
> ‘AMDGPU_VCE_CLOCK_TABLE_ENTRIES’?
>   size_t table_max_size = AMDGPU_ASIC_ID_TABLE_NUM_ENTRIES;
>                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>                           AMDGPU_VCE_CLOCK_TABLE_ENTRIES
> ../amdgpu/amdgpu_asic_id.c:122:26: note: each undeclared identifier is reported
> only once for each function it appears in

You need to rebase on master, that was removed in f05a2b4cb1aedb906524718db8ba2e62383f3064.

> 
> [...]
> 
> > diff --git a/freedreno/meson.build b/freedreno/meson.build
> > new file mode 100644
> > index 0000000..47d6e44
> > --- /dev/null
> > +++ b/freedreno/meson.build
> > @@ -0,0 +1,82 @@
> > [...]
> > +if with_freedreno_kgsl != 'false'
> 
> Booleans should not compare with strings, so do just `if with_freedreno_kgsl`.
> 
> Submitted meson RFE to warn: https://github.com/mesonbuild/meson/issues/2870.
> 
> > +  files_freedreno += files(
> > +    'kgsl/kgsl_bo.c',
> > +    'kgsl/kgsl_device.c',
> > +    'kgsl/kgsl_drm.h',
> > +    'kgsl/kgsl_pipe.c',
> > +    'kgsl/kgsl_priv.h',
> > +    'kgsl/kgsl_ringbuffer.c',
> > +    'kgsl/msm_kgsl.h',
> > +  )
> > +endif
> 
> [...]
> 
> > diff --git a/meson_options.txt b/meson_options.txt
> > new file mode 100644
> > index 0000000..7c2fa4f
> > --- /dev/null
> > +++ b/meson_options.txt
> > @@ -0,0 +1,38 @@
> > [...]
> > +option('libkms',      type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('intel',       type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('radeon',      type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('nouveau',     type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true',
> > 'false', 'auto'])
> > +option('omap',        type : 'combo', value : 'false', choices : ['true',
> > 'false', 'auto'])
> > +option('exynos',      type : 'combo', value : 'false', choices : ['true',
> > 'false', 'auto'])
> > +option('freedreno',   type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('tegra',       type : 'combo', value : 'false', choices : ['true',
> > 'false', 'auto'])
> > +option('vc4',         type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('etnaviv',     type : 'combo', value : 'false', choices : ['true',
> > 'false', 'auto'])
> > +option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('man_pages',   type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('valgrind',    type : 'combo', value : 'auto',  choices : ['true',
> > 'false', 'auto'])
> > +option('freedreno-kgls',        type : 'boolean', value : false)
> 
> Probably using `_` would be better for consistency..

We use `-` in mesa for options, and I think it makes more sense to be consistent
with libdrm's biggest consumer, so I'd prefer to change install_test_programs to
install-test-programs

> 
> Also, option should be named kgsl, not kgls (note sl vs ls).

gah, I keep screwing that up.

> 
> > +option('install_test_programs', type : 'boolean', value : false)
> > +option('udev',                  type : 'boolean', value : false)
> 
> Having description on all those options would be extremely useful 
Eric Engestrom Jan. 5, 2018, 1:34 p.m. UTC | #4
On Wednesday, 2018-01-03 13:31:28 -0800, Dylan Baker wrote:
> This patch adds a complete meson build system, including tests and
> install. It has the necessary hooks to allow it be used as a subproject
> for other meson based builds such as mesa.
> 
> Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
> ---
>  .editorconfig               |   4 +-
>  amdgpu/.editorconfig        |   5 +-
>  amdgpu/meson.build          |  70 +++++++-
>  data/meson.build            |  27 +++-
>  etnaviv/meson.build         |  64 ++++++-
>  exynos/meson.build          |  53 +++++-
>  freedreno/meson.build       |  82 ++++++++-
>  intel/meson.build           | 111 +++++++++++-
>  libkms/meson.build          |  75 +++++++-
>  man/meson.build             |  66 ++++++-
>  meson.build                 | 378 +++++++++++++++++++++++++++++++++++++-
>  meson_options.txt           |  38 ++++-
>  nouveau/meson.build         |  65 ++++++-
>  omap/meson.build            |  53 +++++-
>  radeon/meson.build          |  65 ++++++-
>  tegra/meson.build           |  52 +++++-
>  tests/amdgpu/meson.build    |  40 ++++-
>  tests/etnaviv/meson.build   |  54 +++++-
>  tests/exynos/meson.build    |  54 +++++-
>  tests/kms/meson.build       |  54 +++++-
>  tests/kmstest/meson.build   |  28 +++-
>  tests/meson.build           |  85 ++++++++-
>  tests/modeprint/meson.build |  29 +++-
>  tests/nouveau/meson.build   |  30 +++-
>  tests/proptest/meson.build  |  30 +++-
>  tests/radeon/meson.build    |  27 +++-
>  tests/tegra/meson.build     |  27 +++-
>  tests/util/meson.build      |  37 ++++-
>  tests/vbltest/meson.build   |  28 +++-
>  vc4/meson.build             |  28 +++-
>  30 files changed, 1759 insertions(+)
>  create mode 100644 amdgpu/meson.build
>  create mode 100644 data/meson.build
>  create mode 100644 etnaviv/meson.build
>  create mode 100644 exynos/meson.build
>  create mode 100644 freedreno/meson.build
>  create mode 100644 intel/meson.build
>  create mode 100644 libkms/meson.build
>  create mode 100644 man/meson.build
>  create mode 100644 meson.build
>  create mode 100644 meson_options.txt
>  create mode 100644 nouveau/meson.build
>  create mode 100644 omap/meson.build
>  create mode 100644 radeon/meson.build
>  create mode 100644 tegra/meson.build
>  create mode 100644 tests/amdgpu/meson.build
>  create mode 100644 tests/etnaviv/meson.build
>  create mode 100644 tests/exynos/meson.build
>  create mode 100644 tests/kms/meson.build
>  create mode 100644 tests/kmstest/meson.build
>  create mode 100644 tests/meson.build
>  create mode 100644 tests/modeprint/meson.build
>  create mode 100644 tests/nouveau/meson.build
>  create mode 100644 tests/proptest/meson.build
>  create mode 100644 tests/radeon/meson.build
>  create mode 100644 tests/tegra/meson.build
>  create mode 100644 tests/util/meson.build
>  create mode 100644 tests/vbltest/meson.build
>  create mode 100644 vc4/meson.build
> 
> diff --git a/.editorconfig b/.editorconfig
> index 893b7be..bbad3e6 100644
> --- a/.editorconfig
> +++ b/.editorconfig
> @@ -17,3 +17,7 @@ indent_style = tab
>  [*.m4]
>  indent_style = space
>  indent_size = 2
> +
> +[meson.build,meson_options.txt]

I think this needs to be
  [{meson.build,meson_options.txt}]

> +indent_style = space
> +indent_size = 2
> diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig
> index 2528d67..0c758d6 100644
> --- a/amdgpu/.editorconfig
> +++ b/amdgpu/.editorconfig
> @@ -7,3 +7,8 @@ indent_style = tab
>  indent_size = 8
>  tab_width = 8
>  insert_final_newline = true
> +
> +[meson.build]
> +indent_style = space
> +indent_size = 2

These two should be inherited from the .editorconfig one level above

> +insert_final_newline = false

That's weird; why?

> diff --git a/amdgpu/meson.build b/amdgpu/meson.build
> new file mode 100644
> index 0000000..13bf88b
> --- /dev/null
> +++ b/amdgpu/meson.build
> @@ -0,0 +1,70 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_amdgpu = files(
> +  'amdgpu_asic_id.c',
> +  'amdgpu_bo.c',
> +  'amdgpu_cs.c',
> +  'amdgpu_device.c',
> +  'amdgpu_gpu_info.c',
> +  'amdgpu_internal.h',
> +  'amdgpu_vamgr.c',
> +  'amdgpu_vm.c',
> +  'util_hash.c',
> +  'util_hash.h',
> +  'util_hash_table.c',
> +  'util_hash_table.h',

Should we clean up the list in libdrm (even though it's not in mesa),
and only have files that need to be in these lists?
Ie. remove all files that are included by other files in the list, such
as all the headers in this list?

> +)
> +
> +libdrm_amdgpu = shared_library(
> +  'drm_amdgpu',
> +  [files_amdgpu, config_file],
> +  c_args : [
> +    warn_c_args,
> +    '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(join_paths(get_option('datadir'), 'amdgpu.ids')),

This raises the question: do we want to support android?
Also, isn't there a /libdrm/ missing here?

> +  ],
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : [dep_pthread_stubs],

Nit: unnecessary brackets

> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +install_headers('amdgpu.h', subdir : 'libdrm')
> +
> +pkg.generate(
> +  name : 'libdrm_amdgpu',
> +  libraries : libdrm_amdgpu,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to kernel DRM services for amdgpu',
> +)
> +
> +ext_libdrm_amdgpu = declare_dependency(
> +  link_with : [libdrm, libdrm_amdgpu],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +test(
> +  'amdgpu-symbol-check',
> +  prog_bash,
> +  args : [files('amdgpu-symbol-check'), libdrm_amdgpu]
> +)
> diff --git a/data/meson.build b/data/meson.build
> new file mode 100644
> index 0000000..4990ca5
> --- /dev/null
> +++ b/data/meson.build
> @@ -0,0 +1,27 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +if with_amdgpu
> +  install_data(
> +    'amdgpu.ids',
> +    install_mode : 'r--r--r--',
> +    install_dir : join_paths(get_option('datadir'), 'libdrm'),

How about setting a variable in amdgpu/meson.build?

> +  )
> +endif
> diff --git a/etnaviv/meson.build b/etnaviv/meson.build
> new file mode 100644
> index 0000000..8f39775
> --- /dev/null
> +++ b/etnaviv/meson.build
> @@ -0,0 +1,64 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_etnaviv = files(
> +  'etnaviv_device.c',
> +  'etnaviv_gpu.c',
> +  'etnaviv_bo.c',
> +  'etnaviv_bo_cache.c',
> +  'etnaviv_perfmon.c',
> +  'etnaviv_pipe.c',
> +  'etnaviv_cmd_stream.c',
> +  'etnaviv_drm.h',
> +  'etnaviv_priv.h',
> +)
> +
> +libdrm_etnaviv = shared_library(
> +  'drm_etnaviv',
> +  [files_etnaviv, config_file],
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +  dependencies : [dep_pthread_stubs, dep_rt],
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +install_headers('etnaviv_drmif.h', subdir : 'libdrm')
> +
> +pkg.generate(
> +  name : 'libdrm_etnaviv',
> +  libraries : libdrm_etnaviv,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to Tegra kernel DRM services',
> +)
> +
> +ext_libdrm_etnaviv = declare_dependency(
> +  link_with : [libdrm, libdrm_etnaviv],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +test(
> +  'etnaviv-symbol-check',
> +  prog_bash,
> +  args : [files('etnaviv-symbol-check'), libdrm_etnaviv]
> +)
> diff --git a/exynos/meson.build b/exynos/meson.build
> new file mode 100644
> index 0000000..7da74aa
> --- /dev/null
> +++ b/exynos/meson.build
> @@ -0,0 +1,53 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +libdrm_exynos = shared_library(
> +  'drm_exynos',
> +  [files('exynos_drm.c', 'exynos_fimg2d.c', 'fimg2d_reg.h'), config_file],

Why skip files_exynos? I think I prefer the consistency, even if the var
only contains two files.

> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : [dep_pthread_stubs],
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +install_headers('exynos_drmif.h', subdir : 'libdrm')
> +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos')
> +
> +ext_libdrm_exynos = declare_dependency(
> +  link_with : [libdrm, libdrm_exynos],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +pkg.generate(
> +  name : 'libdrm_exynos',
> +  libraries : libdrm_exynos,
> +  subdirs : ['.', 'libdrm', 'exynos'],
> +  version : '0.7',
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to exynos kernel DRM services',
> +)
> +
> +test(
> +  'exynos-symbol-check',
> +  prog_bash,
> +  args : [files('exynos-symbol-check'), libdrm_exynos]
> +)
> diff --git a/freedreno/meson.build b/freedreno/meson.build
> new file mode 100644
> index 0000000..47d6e44
> --- /dev/null
> +++ b/freedreno/meson.build
> @@ -0,0 +1,82 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_freedreno = files(
> +  'freedreno_device.c',
> +  'freedreno_pipe.c',
> +  'freedreno_priv.h',
> +  'freedreno_ringbuffer.c',
> +  'freedreno_bo.c',
> +  'freedreno_bo_cache.c',
> +  'msm/msm_bo.c',
> +  'msm/msm_device.c',
> +  'msm/msm_drm.h',
> +  'msm/msm_pipe.c',
> +  'msm/msm_priv.h',
> +  'msm/msm_ringbuffer.c',
> +)
> +
> +if with_freedreno_kgsl != 'false'

(mentioned by someone already)

> +  files_freedreno += files(
> +    'kgsl/kgsl_bo.c',
> +    'kgsl/kgsl_device.c',
> +    'kgsl/kgsl_drm.h',
> +    'kgsl/kgsl_pipe.c',
> +    'kgsl/kgsl_priv.h',
> +    'kgsl/kgsl_ringbuffer.c',
> +    'kgsl/msm_kgsl.h',
> +  )
> +endif
> +
> +libdrm_freedreno = shared_library(
> +  'drm_freedreno',
> +  [files_freedreno, config_file],
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm],
> +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
> +  link_with : libdrm,
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +ext_libdrm_freedreno = declare_dependency(
> +  link_with : [libdrm, libdrm_freedreno],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers(
> +  'freedreno_drmif.h', 'freedreno_ringbuffer.h',
> +  subdir : 'freedreno'
> +)
> +
> +pkg.generate(
> +  name : 'libdrm_freedreno',
> +  libraries : libdrm_freedreno,
> +  subdirs : ['.', 'libdrm', 'freedreno'],
> +  version : '0.7',
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to freedreno kernel DRM services',
> +)
> +
> +test(
> +  'freedreno-symbol-check',
> +  prog_bash,
> +  args : [files('freedreno-symbol-check'), libdrm_freedreno]
> +)
> diff --git a/intel/meson.build b/intel/meson.build
> new file mode 100644
> index 0000000..18f35c0
> --- /dev/null
> +++ b/intel/meson.build
> @@ -0,0 +1,111 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_intel = files(
> +  'intel_bufmgr.c',
> +  'intel_bufmgr_priv.h',
> +  'intel_bufmgr_fake.c',
> +  'intel_bufmgr_gem.c',
> +  'intel_decode.c',
> +  'intel_chipset.h',
> +  'mm.c',
> +  'mm.h',
> +  'uthash.h',
> +)
> +
> +libdrm_intel = shared_library(
> +  'drm_intel',
> +  [files_intel, config_file],
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
> +  c_args : warn_c_args,
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +ext_libdrm_intel = declare_dependency(
> +  link_with : [libdrm, libdrm_intel],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers(
> +  'intel_bufmgr.h', 'intel_aub.h', 'intel_debug.h',
> +  subdir : 'libdrm',
> +)
> +
> +pkg.generate(
> +  name : 'libdrm_intel',
> +  libraries : libdrm_intel,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  requires : 'libdrm',
> +  description : 'Userspace interface to intel kernel DRM services',
> +)
> +
> +test_decode = executable(
> +  'test_decode',
> +  files('test_decode.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : [libdrm, libdrm_intel],
> +  c_args : warn_c_args,
> +)
> +
> +test(
> +  'gen4-3d.batch',
> +  prog_bash,
> +  args : files('tests/gen4-3d.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'gen45-3d.batch',
> +  prog_bash,
> +  args : files('tests/gm45-3d.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'gen5-3d.batch',
> +  prog_bash,
> +  args : files('tests/gen5-3d.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'gen6-3d.batch',
> +  prog_bash,
> +  args : files('tests/gen6-3d.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'gen7-3d.batch',
> +  prog_bash,
> +  args : files('tests/gen7-3d.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'gen7-2d-copy.batch',
> +  prog_bash,
> +  args : files('tests/gen7-2d-copy.batch.sh'),
> +  workdir : meson.current_build_dir(),
> +)
> +test(
> +  'intel-symbol-check',
> +  prog_bash,
> +  args : [files('intel-symbol-check'), libdrm_intel]
> +)
> diff --git a/libkms/meson.build b/libkms/meson.build
> new file mode 100644
> index 0000000..80afc89
> --- /dev/null
> +++ b/libkms/meson.build
> @@ -0,0 +1,75 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +libkms_include = [inc_root, inc_drm]
> +files_libkms = files(
> +  'internal.h',
> +  'linux.c',
> +  'dumb.c',
> +  'api.c',
> +)
> +if with_vmwgfx
> +  files_libkms += files('vmwgfx.c')
> +endif
> +if with_intel
> +  files_libkms += files('intel.c')
> +endif
> +if with_nouveau
> +  files_libkms += files('nouveau.c')
> +endif
> +if with_radeon
> +  files_libkms += files('radeon.c')
> +endif
> +if with_exynos
> +  files_libkms += files('exynos.c')
> +  libkms_include += include_directories('../exynos')
> +endif
> +
> +libkms = shared_library(
> +  'kms',
> +  [files_libkms, config_file],
> +  c_args : warn_c_args,
> +  include_directories : libkms_include,
> +  link_with : libdrm,
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +ext_libkms = declare_dependency(
> +  link_with : [libdrm, libkms],
> +  include_directories : [libkms_include],
> +)
> +
> +install_headers('libkms.h', subdir : 'libkms')
> +
> +pkg.generate(
> +  name : 'libkms',
> +  libraries : libkms,
> +  subdirs : ['libkms'],
> +  version : '1.0.0',
> +  requires_private : 'libdrm',
> +  description : 'Library that abstracts away the different mm interfaces for kernel drivers',
> +)
> +
> +test(
> +  'kms-symbol-check',
> +  prog_bash,
> +  args : [files('kms-symbol-check'), libkms]
> +)
> diff --git a/man/meson.build b/man/meson.build
> new file mode 100644
> index 0000000..0b2efe5
> --- /dev/null
> +++ b/man/meson.build
> @@ -0,0 +1,66 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +xsltproc_args = [
> +  '--stringparam', 'man.authors.section.enabled', '0',
> +  '--stringparam', 'man.copyright.section.enabled', '0',
> +  '--stringparam', 'funcsynopsis.style', 'ansi',
> +  '--stringparam', 'man.output.quietly', '1',
> +  '--nonet', manpage_style,
> +]
> +
> +xmls = [
> +  ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'],
> +  ['drmHandleEvent', '3'], ['drmModeGetResources', '3']
> +]
> +foreach x : xmls
> +  m = x[0]
> +  s = x[1]
> +  custom_target(
> +    m,
> +    input : files('@0@.xml'.format(m)),
> +    output : '@0@.@1@'.format(m, s),
> +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'],
> +    install : true,
> +    install_dir : join_paths(get_option('datadir'), 'man', 'man@0@'.format(s)),

get_option('mandir')

> +    build_by_default : true,
> +  )
> +endforeach
> +
> +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm']
> +  gen = custom_target(
> +    'gen-@0@'.format(x),
> +    input : 'drm-memory.xml',
> +    output : '@0@.xml'.format(x),
> +    command : [prog_sed, '-e',
> +               's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@',
> +               '@INPUT@'],
> +    capture : true,
> +  )
> +  custom_target(
> +    '@0@.7'.format(x),
> +    input : gen,
> +    output : '@0@.7'.format(x, '7'),
> +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'],
> +    install : true,
> +    install_dir : join_paths(get_option('datadir'), 'man', 'man7'),

ditto: mandir

> +    build_by_default : true,
> +  )
> +endforeach
> diff --git a/meson.build b/meson.build
> new file mode 100644
> index 0000000..74ae222
> --- /dev/null
> +++ b/meson.build
> @@ -0,0 +1,378 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +project(
> +  'libdrm',
> +  ['c'],
> +  version : '2.4.89',
> +  license : 'MIT',
> +  default_options : ['buildtype=debugoptimized', 'c_std=gnu99'],

gnu99, are you sure?

also, we should specify the version of meson we support here:
+  meson_version : '>= 0.42',

> +)
> +
> +pkg = import('pkgconfig')
> +
> +with_udev = get_option('udev')
> +with_freedreno_kgsl = get_option('freedreno-kgls')
> +with_install_tests = get_option('install_test_programs')
> +with_cairo_tests = get_option('cairo_tests')
> +with_valgrind = get_option('valgrind')
> +
> +config = configuration_data()
> +
> +# TODO: openbsd is guess, the others are correct
> +if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system())

Let's make that *BSD until we know of a special case?
  if host_machine.system().to_upper.endswith('BSD')

> +  dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4')
> +else
> +  dep_pthread_stubs = []
> +endif
> +dep_threads = dependency('threads')
> +
> +cc = meson.get_compiler('c')
> +# Check for atomics
> +if cc.compiles('''
> +    int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
> +    int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
> +    ''',
> +    name : 'Intel Atomics')
> +  config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', true)

Will be unset in the other cases, instead of being set to 0

> +  with_atomics = true
> +elif cc.has_header('atomic_ops.h')
> +  config.set10('HAVE_LIB_ATOMIC_OPS', true)

Ditto.

Those can be easily fixed by setting them to false first, just before
the if chain:
  config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', false)
  config.set10('HAVE_LIB_ATOMIC_OPS', false)

> +  with_atomics = true
> +elif cc.has_function('atomic_cas_uint')
> +  with_atomics = true
> +else
> +  with_atomics = false
> +endif
> +
> +with_intel = false
> +_intel = get_option('intel')
> +if _intel != 'false'
> +  if _intel == 'true' and not with_atomics
> +    error('libdrm_intel requires atomics.')
> +  endif
> +  with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86')
> +endif
> +
> +with_radoen = false

typo

> +_radeon = get_option('radeon')
> +if _radeon != 'false'
> +  if _radeon == 'true' and not with_atomics
> +    error('libdrm_radeon requires atomics.')
> +  endif
> +  with_radeon = true
> +endif
> +
> +with_amdgpu = false
> +_amdgpu = get_option('amdgpu')
> +if _amdgpu != 'false'
> +  if _amdgpu == 'true' and not with_atomics
> +    error('libdrm_amdgpu requires atomics.')
> +  endif
> +  with_amdgpu = true
> +endif
> +
> +with_nouveau = false
> +_nouveau = get_option('nouveau')
> +if _nouveau != 'false'
> +  if _nouveau == 'true' and not with_atomics
> +    error('libdrm_nouveau requires atomics.')
> +  endif
> +  with_nouveau = true
> +endif
> +
> +with_vmwgfx = false
> +_vmwgfx = get_option('vmwgfx')
> +if _vmwgfx != 'false'
> +  with_vmwgfx = true
> +endif
> +
> +with_omap = false
> +_omap = get_option('omap')
> +if _omap != 'false'
> +  if _omap == 'true' and not with_atomics
> +    error('libdrm_omap requires atomics.')
> +  endif
> +  with_omap = _omap == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +with_freedreno = false
> +_freedreno = get_option('freedreno')
> +if _freedreno != 'false'
> +  if _freedreno == 'true' and not with_atomics
> +    error('libdrm_freedreno requires atomics.')
> +  endif
> +  with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +with_tegra = false
> +_tegra = get_option('tegra')
> +if _tegra != 'false'
> +  if _tegra == 'true' and not with_atomics
> +    error('libdrm_tegra requires atomics.')
> +  endif
> +  with_tegra = _tegra == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +with_etnaviv = false
> +_etnaviv = get_option('etnaviv')
> +if _etnaviv != 'false'
> +  if _etnaviv == 'true' and not with_atomics
> +    error('libdrm_etnaviv requires atomics.')
> +  endif
> +  with_etnaviv = _etnaviv == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +with_exynos = false
> +_exynos = get_option('exynos')
> +if _exynos != 'false'
> +  with_exynos = _exynos == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +with_vc4 = false
> +_vc4 = get_option('vc4')
> +if _vc4 != 'false'
> +  with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> +endif
> +
> +# XXX: Aparently only freebsd and dragonfly bsd actually need this (and
> +# gnu/kfreebsd), not openbsd and netbsd
> +with_libkms = false
> +_libkms = get_option('libkms')
> +if _libkms != 'false'
> +  with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system())
> +endif
> +
> +if with_udev
> +  dep_udev = dependency('udev')
> +  config.set10('UDEV', true)
> +else
> +  dep_udev = []
> +endif
> +
> +# Among others FreeBSD does not have a separate dl library.
> +if not cc.has_function('dlsym')
> +  dep_dl = cc.find_library('dl', required : with_nouveau)
> +else
> +  dep_dl = []
> +endif
> +# clock_gettime might require -rt, or it might not. find out
> +if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>')
> +  # XXX: untested
> +  dep_rt = cc.find_library('rt')
> +else
> +  dep_rt = []
> +endif
> +dep_m = cc.find_library('m', required : false)
> +if cc.has_header('sys/sysctl.h')
> +  config.set10('HAVE_SYS_SYSCTL_H', true)
> +endif
> +if cc.has_header('sys/select.h')
> +  config.set10('HAVE_SYS_SELECT_H', true)
> +endif
> +if cc.has_header_symbol('sys/sysmacros.h', 'major')
> +  config.set10('MAJOR_IN_SYSMACROS', true)
> +elif cc.has_header_symbol('sys/mkdev.h', 'major')
> +  config.set10('MAJOR_IN_MKDEV', true)
> +endif
> +if cc.has_function('open_memstream')
> +  config.set10('HAVE_OPEN_MEMSTREAM', true)
> +endif
> +
> +warn_c_args = []
> +foreach a : ['-Wall', '-Wextra', '-Wsign-compare', 
> +             '-Werror-implicit-function-declaration', '-Wpointer-arith',
> +             '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes',
> +             '-Wmissing-declarations', '-Wnested-externs', '-Wpacked',
> +             '-Wswitch-enum', '-Wmissing-format-attribute', 
> +             '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', 
> +             '-Wdeclaration-after-statement', '-Wold-style-definition']
> +  if cc.has_argument(a)
> +    warn_c_args += a
> +  endif
> +endforeach
> +# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list
> +# of options
> +foreach a : ['unused-parameter', 'attributes', 'long-long', 
> +             'missing-field-initializers']
> +  if cc.has_argument('-W@0@'.format(a))
> +    warn_c_args += '-Wno-@0@'.format(a)
> +  endif
> +endforeach
> +
> +
> +dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel)
> +dep_cunit = dependency('cunit', version : '>= 2.1', required : false)
> +dep_cairo = dependency('cairo', required : with_cairo_tests == 'true')
> +dep_valgrind = dependency('valgrind', required : with_valgrind == 'true')
> +
> +with_man_pages = get_option('man_pages')
> +prog_xslt = find_program('xsltproc', required : with_man_pages == 'true')
> +prog_sed = find_program('sed', required : with_man_pages == 'true')
> +manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
> +if prog_xslt.found()
> +  if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0
> +    if with_man_pages == 'true'
> +      error('Manpage style sheet cannot be found')
> +    endif
> +    with_man_pages = 'false'
> +  endif
> +endif
> +with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found()
> +
> +# Used for tets
> +prog_bash = find_program('bash')
> +
> +if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''',
> +               name : 'compiler supports __attribute__(("hidden"))')
> +  config.set10('HAVE_VISIBILITY', true)
> +endif
> +
> +foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'],
> +             [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'],
> +             [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'],
> +             [with_tegra, 'TEGRA'], [with_vc4, 'VC4'],
> +             [with_etnaviv, 'ETNAVIV'], [with_install_tests, 'INSTALL_TESTS']]

HAVE_INSTALL_TESTS is not used in C files, you can remove it from this list :)

> +  e = t[0]
> +  if e

Why the temp var?

> +    config.set10('HAVE_@0@'.format(t[1]), true)

I'll add -Wundef when I have some time and go through those so we can have
  config.set10('HAVE_@0@'.format(t[1]), t[0])

Then we can eventually switch to -Werror=undef :D

> +  endif
> +endforeach
> +if with_freedreno_kgsl
> +  if not with_freedreno
> +    error('cannot enable freedreno-kgsl without freedreno support')
> +  endif
> +  config.set10('HAVE_FREEDRENO_KGSL', true)
> +endif

> +if with_amdgpu
> +  config.set10('HAVE_AMDGPU', true)
> +  if dep_cunit.found()
> +    config.set10('HAVE_CUNIT', true)
> +  endif
> +endif

These two are actually unused, and should be removed from configure.ac :)

> +if dep_cairo.found()
> +  config.set10('HAVE_CAIRO', true)
> +endif
> +if dep_valgrind.found()
> +  config.set10('HAVE_VALGRIND', true)
> +endif
> +
> +config.set10('_GNU_SOURCE', true)
> +config_file = configure_file(
> +  configuration : config,
> +  output : 'config.h',
> +)
> +add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
> +
> +inc_root = include_directories('.')
> +inc_drm = include_directories('include/drm')
> +
> +files_libdrm = files(
> +	'xf86drm.c',
> +	'xf86drmHash.c',
> +	'xf86drmHash.h',
> +	'xf86drmRandom.c',
> +	'xf86drmRandom.h',
> +	'xf86drmSL.c',
> +	'xf86drmMode.c',
> +	'xf86atomic.h',
> +	'libdrm_macros.h',
> +	'libdrm_lists.h',
> +	'util_double_list.h',
> +	'util_math.h',
> +)
> +
> +libdrm = shared_library(
> +  'drm',
> +  [files_libdrm, config_file],
> +  c_args : warn_c_args,
> +  dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m],
> +  include_directories : inc_drm,
> +  version : '2.4.0',
> +  install : true,
> +)
> +
> +ext_libdrm = declare_dependency(
> +  link_with : libdrm,
> +  include_directories : inc_drm,
> +)
> +
> +install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h')
> +install_headers(
> +	'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h',
> +	'include/drm/drm_sarea.h', 'include/drm/i915_drm.h',
> +	'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
> +	'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h',
> +	'include/drm/r128_drm.h', 'include/drm/radeon_drm.h',
> +	'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h',
> +	'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
> +	'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',

Do we want to only install the headers for the libs that are enabled?
(Not sure what autotools does)

> +  subdir : 'libdrm',
> +)
> +if with_vmwgfx
> +  install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm')
> +endif
> +
> +pkg.generate(
> +  name : 'libdrm',
> +  libraries : libdrm,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  description : 'Userspace interface to kernel DRM services',
> +)
> + 
> +if with_libkms
> +  subdir('libkms')
> +endif
> +if with_intel
> +  subdir('intel')
> +endif
> +if with_nouveau
> +  subdir('nouveau')
> +endif
> +if with_radeon
> +  subdir('radeon')
> +endif
> +if with_amdgpu
> +  subdir('amdgpu')
> +endif
> +if with_omap
> +  subdir('omap')
> +endif
> +if with_exynos
> +  subdir('exynos')
> +endif
> +if with_freedreno
> +  subdir('freedreno')
> +endif
> +if with_tegra
> +  subdir('tegra')
> +endif
> +if with_vc4
> +  subdir('vc4')
> +endif
> +if with_etnaviv
> +  subdir('etnaviv')
> +endif
> +if with_man_pages
> +  subdir('man')
> +endif
> +subdir('data')
> +subdir('tests')
> diff --git a/meson_options.txt b/meson_options.txt
> new file mode 100644
> index 0000000..7c2fa4f
> --- /dev/null
> +++ b/meson_options.txt
> @@ -0,0 +1,38 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +option('libkms',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('intel',       type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('radeon',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('nouveau',     type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true', 'false', 'auto'])
> +option('omap',        type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> +option('exynos',      type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> +option('freedreno',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('tegra',       type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> +option('vc4',         type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('etnaviv',     type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> +option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('man_pages',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('valgrind',    type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> +option('freedreno-kgls',        type : 'boolean', value : false)
> +option('install_test_programs', type : 'boolean', value : false)
> +option('udev',                  type : 'boolean', value : false)

(as mentioned, descriptions would be good; copy/pasting the ones in
configure.ac should be enough)

> diff --git a/nouveau/meson.build b/nouveau/meson.build
> new file mode 100644
> index 0000000..a50e4f7
> --- /dev/null
> +++ b/nouveau/meson.build
> @@ -0,0 +1,65 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_nouveau = files(
> +	'nouveau.c',
> +	'pushbuf.c',
> +	'bufctx.c',
> +	'abi16.c',
> +	'private.h',
> +)
> +
> +libdrm_nouveau = shared_library(
> +  'drm_nouveau',
> +  [files_nouveau, config_file],
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : dep_threads,
> +  version : '2.0.0',
> +  install : true,
> +)
> +
> +ext_libdrm_nouveau = declare_dependency(
> +  link_with : [libdrm, libdrm_nouveau],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers('nouveau.h', subdir : 'libdrm/nouveau')
> +install_headers(
> +  'nvif/class.h', 'nvif/cl0080.h', 'nvif/cl9097.h', 'nvif/if0002.h',
> +  'nvif/if0003.h', 'nvif/ioctl.h', 'nvif/unpack.h',
> +  subdir : 'libdrm/nouveau/nvif'
> +)
> +
> +pkg.generate(
> +  name : 'libdrm_nouveau',
> +  libraries : libdrm_nouveau,
> +  subdirs : ['.', 'nouveau'],
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to nouveau kernel DRM services',
> +)
> +
> +test(
> +  'nouveau-symbol-check',
> +  prog_bash,
> +  args : [files('nouveau-symbol-check'), libdrm_nouveau]
> +)
> diff --git a/omap/meson.build b/omap/meson.build
> new file mode 100644
> index 0000000..1881087
> --- /dev/null
> +++ b/omap/meson.build
> @@ -0,0 +1,53 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +libdrm_omap = shared_library(
> +  'drm_omap',
> +  [files('omap_drm.c'), config_file],
> +  include_directories : [inc_root, inc_drm],
> +  c_args : warn_c_args,
> +  link_with : libdrm,
> +  dependencies : [dep_pthread_stubs],
> +  version : '1.0.0',
> +  install : true,
> +)
> +
> +ext_libdrm_omap = declare_dependency(
> +  link_with : [libdrm, libdrm_omap],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers('omap_drmif.h', subdir : 'libdrm')
> +install_headers('omap_drm.h', subdir : 'omap')
> +
> +pkg.generate(
> +  name : 'libdrm_omap',
> +  libraries : libdrm_omap,
> +  subdirs : ['.', 'libdrm', 'omap'],
> +  version : '0.6',
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to omap kernel DRM services',
> +)
> +
> +test(
> +  'omap-symbol-check',
> +  prog_bash,
> +  args : [files('omap-symbol-check'), libdrm_omap]
> +)
> diff --git a/radeon/meson.build b/radeon/meson.build
> new file mode 100644
> index 0000000..f41c5c4
> --- /dev/null
> +++ b/radeon/meson.build
> @@ -0,0 +1,65 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_radeon = files(
> +	'radeon_bo_gem.c',
> +	'radeon_cs_gem.c',
> +	'radeon_cs_space.c',
> +	'radeon_bo.c',
> +	'radeon_cs.c',
> +	'radeon_surface.c',
> +)
> +
> +libdrm_radeon = shared_library(
> +  'drm_radeon',
> +  [files_radeon, config_file],
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : [dep_pthread_stubs],
> +  version : '1.0.1',
> +  install : true,
> +)
> +
> +ext_libdrm_radeon = declare_dependency(
> +  link_with : [libdrm, libdrm_radeon],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers(
> +	'radeon_bo.h', 'radeon_cs.h', 'radeon_surface.h', 'radeon_bo_gem.h',
> +	'radeon_cs_gem.h', 'radeon_bo_int.h', 'radeon_cs_int.h', 'r600_pci_ids.h',
> +  subdir : 'libdrm'
> +)
> +
> +pkg.generate(
> +  name : 'libdrm_radeon',
> +  libraries : libdrm_radeon,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to kernel DRM services for radeon',
> +)
> +
> +test(
> +  'radeon-symbol-check',
> +  prog_bash,
> +  args : [files('radeon-symbol-check'), libdrm_radeon]
> +)
> diff --git a/tegra/meson.build b/tegra/meson.build
> new file mode 100644
> index 0000000..568531c
> --- /dev/null
> +++ b/tegra/meson.build
> @@ -0,0 +1,52 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +libdrm_tegra = shared_library(
> +  'drm_tegra',
> +  [files('private.h', 'tegra.c'), config_file],
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : [dep_pthread_stubs],
> +  c_args : warn_c_args,
> +  version : '0.0.0',
> +  install : true,
> +)
> +
> +ext_libdrm_tegra = declare_dependency(
> +  link_with : [libdrm, libdrm_tegra],
> +  include_directories : [inc_drm, include_directories('.')],
> +)
> +
> +install_headers('tegra.h', subdir : 'libdrm')
> +
> +pkg.generate(
> +  name : 'libdrm_tegra',
> +  libraries : libdrm_tegra,
> +  subdirs : ['.', 'libdrm'],
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to Tegra kernel DRM services',
> +)
> +
> +test(
> +  'tegra-symbol-check',
> +  prog_bash,
> +  args : [files('tegra-symbol-check'), libdrm_tegra]
> +)
> diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
> new file mode 100644
> index 0000000..5a07ce2
> --- /dev/null
> +++ b/tests/amdgpu/meson.build
> @@ -0,0 +1,40 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +files_amdgpu_test = files(
> +  'amdgpu_test.c',
> +  'basic_tests.c',
> +  'bo_tests.c',
> +  'cs_tests.c',
> +  'vce_tests.c',
> +  'uvd_enc_tests.c',
> +  'vcn_tests.c',
> +  'deadlock_tests.c',
> +  'vm_tests.c',
> +)
> +
> +amdgpu_test = executable(
> +  'amdgpu_test',
> +  files_amdgpu_test,
> +  dependencies : [dep_cunit, dep_threads],
> +  include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')],

Not a fan of going back up the tree, but... meh

> +  link_with : [libdrm, libdrm_amdgpu],
> +  install : with_install_tests,
> +)
> diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build
> new file mode 100644
> index 0000000..32c5cee
> --- /dev/null
> +++ b/tests/etnaviv/meson.build
> @@ -0,0 +1,54 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +inc_etnaviv_tests = [inc_root, inc_drm, include_directories('../../etnaviv')]
> +
> +etnaviv_2d_test_files = files(
> +  'cmdstream.xml.h',
> +  'etnaviv_2d_test.c',
> +  'state.xml.h',
> +  'state_2d.xml.h',
> +  'write_bmp.c',
> +  'write_bmp.h',
> +)
> +
> +etnaviv_2d_test = executable(
> +  'etnaviv_2d_test',
> +  etnaviv_2d_test_files,
> +  include_directories : inc_etnaviv_tests,
> +  link_with : [libdrm, libdrm_etnaviv],
> +  install : with_install_tests,
> +)
> +
> +etnaviv_cmd_stream_test = executable(
> +  'etnaviv_cmd_stream_test',
> +  files('etnaviv_cmd_stream_test.c'),
> +  include_directories : inc_etnaviv_tests,
> +  link_with : [libdrm, libdrm_etnaviv],
> +  install : with_install_tests,
> +)
> +
> +etnaviv_bo_cache_test = executable(
> +  'etnaviv_bo_cache_test',
> +  files('etnaviv_bo_cache_test.c'),
> +  include_directories : inc_etnaviv_tests,
> +  link_with : [libdrm, libdrm_etnaviv],
> +  install : with_install_tests,
> +)
> diff --git a/tests/exynos/meson.build b/tests/exynos/meson.build
> new file mode 100644
> index 0000000..940c3ce
> --- /dev/null
> +++ b/tests/exynos/meson.build
> @@ -0,0 +1,54 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +inc_exynos = include_directories('../../exynos')
> +
> +if with_libkms
> +  exynos_fimg2d_test = executable(
> +    'exynos_fimg2d_test',
> +    files('exynos_fimg2d_test.c'),
> +    c_args : warn_c_args,
> +    include_directories : [inc_root, inc_drm, inc_exynos,
> +                           include_directories('../../libkms')],
> +    link_with : [libdrm, libkms, libdrm_exynos],
> +    dependencies : dep_threads,
> +    install : with_install_tests,
> +  )
> +endif
> +
> +exynos_fimg2d_perf = executable(
> +  'exynos_fimg2d_perf',
> +  files('exynos_fimg2d_perf.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm, inc_exynos],
> +  link_with : [libdrm, libdrm_exynos],
> +  dependencies : dep_threads,
> +  install : with_install_tests,
> +)
> +
> +exynos_fimg2d_event = executable(
> +  'exynos_fimg2d_event',
> +  files('exynos_fimg2d_event.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_drm, inc_exynos],
> +  link_with : [libdrm, libdrm_exynos],
> +  dependencies : dep_threads,
> +  install : with_install_tests,
> +)
> diff --git a/tests/kms/meson.build b/tests/kms/meson.build
> new file mode 100644
> index 0000000..e991913
> --- /dev/null
> +++ b/tests/kms/meson.build
> @@ -0,0 +1,54 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +libkms_test_files = files(
> +	'libkms-test.h',
> +	'libkms-test-crtc.c',
> +	'libkms-test-device.c',
> +	'libkms-test-framebuffer.c',
> +	'libkms-test-plane.c',
> +	'libkms-test-screen.c',
> +)
> +
> +libkms_test = static_library(
> +  'kms-test',
> +  libkms_test_files,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> +
> +kms_steal_crtc = executable(
> +  'kms-steal-crtc',
> +  files('kms-steal-crtc.c'),
> +  dependencies : dep_cairo,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : [libkms_test, libutil],
> +  install : with_install_tests,
> +)
> +
> +kms_universal_planes = executable(
> +  'kms-universal-lanes',
> +  files('kms-universal-planes.c'),
> +  dependencies : dep_cairo,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : [libkms_test],
> +  install : with_install_tests,
> +)
> diff --git a/tests/kmstest/meson.build b/tests/kmstest/meson.build
> new file mode 100644
> index 0000000..f713f26
> --- /dev/null
> +++ b/tests/kmstest/meson.build
> @@ -0,0 +1,28 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +kmstest = executable(
> +  'kmstest',
> +  files('main.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_tests, include_directories('../../libkms'), inc_drm],
> +  link_with : [libutil, libkms, libdrm],
> +  install : with_install_tests,
> +)
> diff --git a/tests/meson.build b/tests/meson.build
> new file mode 100644
> index 0000000..960ff7b
> --- /dev/null
> +++ b/tests/meson.build
> @@ -0,0 +1,85 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +inc_tests = include_directories('.')
> +
> +subdir('util')
> +subdir('kms')
> +subdir('modeprint')
> +subdir('proptest')
> +subdir('vbltest')
> +if with_libkms
> +  subdir('kmstest')
> +endif
> +if with_radeon
> +  subdir('radeon')
> +endif
> +if with_amdgpu and dep_cunit.found()

I feel like the dep_cunit.found() condition belongs inside
tests/amdgpu/meson.build, around the relevant test.

> +  subdir('amdgpu')
> +endif
> +if with_exynos
> +  subdir('exynos')
> +endif
> +if with_tegra
> +  subdir('tegra')
> +endif
> +if with_etnaviv
> +  subdir('etnaviv')
> +endif
> +if with_nouveau
> +  subdir('nouveau')
> +endif
> +
> +drmsl = executable(
> +  'drmsl',
> +  files('drmsl.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> +
> +hash = executable(
> +  'hash',
> +  files('hash.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> +
> +random = executable(
> +  'random',
> +  files('random.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> +
> +drmdevice = executable(
> +  'drmdevice',
> +  files('drmdevice.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> +
> +test('random', random, timeout : 240)
> +test('hash', hash)
> +test('drmsl', drmsl)
> +test('drmdevice', drmdevice)
> diff --git a/tests/modeprint/meson.build b/tests/modeprint/meson.build
> new file mode 100644
> index 0000000..5f0eb24
> --- /dev/null
> +++ b/tests/modeprint/meson.build
> @@ -0,0 +1,29 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +modeprint = executable(
> +  'modeprint',
> +  files('modeprint.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : libdrm,
> +  dependencies : dep_threads,
> +  install : with_install_tests,
> +)
> diff --git a/tests/nouveau/meson.build b/tests/nouveau/meson.build
> new file mode 100644
> index 0000000..f5d73c1
> --- /dev/null
> +++ b/tests/nouveau/meson.build
> @@ -0,0 +1,30 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +threaded = executable(
> +  'threaded',
> +  files('threaded.c'),
> +  dependencies : [dep_dl, dep_threads],
> +  include_directories : [inc_root, inc_drm, include_directories('../../nouveau')],
> +  link_with : [libdrm, libdrm_nouveau],
> +  c_args : warn_c_args,
> +)
> +
> +test('threaded', threaded)
> diff --git a/tests/proptest/meson.build b/tests/proptest/meson.build
> new file mode 100644
> index 0000000..dcd724f
> --- /dev/null
> +++ b/tests/proptest/meson.build
> @@ -0,0 +1,30 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +proptest_files = files('proptest.c')
> +
> +proptest = executable(
> +  'proptest',
> +  files('proptest.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : [libdrm, libutil],
> +  install : with_install_tests,
> +)
> diff --git a/tests/radeon/meson.build b/tests/radeon/meson.build
> new file mode 100644
> index 0000000..54db231
> --- /dev/null
> +++ b/tests/radeon/meson.build
> @@ -0,0 +1,27 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +radeon_ttm = executable(
> +  'radeon_ttm',
> +  files('rbo.c', 'rbo.h', 'radeon_ttm.c'),
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  c_args : warn_c_args,
> +)
> diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build
> new file mode 100644
> index 0000000..9c74ac4
> --- /dev/null
> +++ b/tests/tegra/meson.build
> @@ -0,0 +1,27 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +openclose = executable(
> +  'openclose',
> +  files('openclose.c'),
> +  include_directories : [inc_root, inc_drm, include_directories('../../tegra')],
> +  c_args : warn_c_args,
> +  link_with : [libdrm, libdrm_tegra],
> +)
> diff --git a/tests/util/meson.build b/tests/util/meson.build
> new file mode 100644
> index 0000000..a0e1d3c
> --- /dev/null
> +++ b/tests/util/meson.build
> @@ -0,0 +1,37 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +util_files = files(
> +  'common.h',
> +  'format.c',
> +  'format.h',
> +  'kms.c',
> +  'kms.h',
> +  'pattern.c',
> +  'pattern.h',
> +)
> +
> +libutil = static_library(
> +  'util',
> +  [util_files, config_file],
> +  include_directories : [inc_root, inc_drm],
> +  link_with : libdrm,
> +  dependencies : dep_cairo
> +)
> diff --git a/tests/vbltest/meson.build b/tests/vbltest/meson.build
> new file mode 100644
> index 0000000..4fb1ad3
> --- /dev/null
> +++ b/tests/vbltest/meson.build
> @@ -0,0 +1,28 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +vbltest = executable(
> +  'vbltest',
> +  files('vbltest.c'),
> +  c_args : warn_c_args,
> +  include_directories : [inc_root, inc_tests, inc_drm],
> +  link_with : [libdrm, libutil],
> +  install : with_install_tests,
> +)
> diff --git a/vc4/meson.build b/vc4/meson.build
> new file mode 100644
> index 0000000..0136987
> --- /dev/null
> +++ b/vc4/meson.build
> @@ -0,0 +1,28 @@
> +# Copyright © 2017 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +install_headers('vc4_packet.h', 'vc4_qpu_defines.h', subdir : 'libdrm')
> +
> +pkg.generate(
> +  name : 'libdrm_vc4',
> +  version : meson.project_version(),
> +  requires_private : 'libdrm',
> +  description : 'Userspace interface to vc4 kernel DRM services',
> +)
> -- 
> git-series 0.9.1

I think everything else looks good; thanks for the effort!
Eric Engestrom Jan. 5, 2018, 1:41 p.m. UTC | #5
Gah, I missed v4, the double-list thing made it land in the other folder
than v3...

If you tell me you had already fixed all those, I'll read v4 to actually
r-b it, otherwise I'll wait for v5 :)


On Friday, 2018-01-05 13:34:53 +0000, Eric Engestrom wrote:
> On Wednesday, 2018-01-03 13:31:28 -0800, Dylan Baker wrote:
> > This patch adds a complete meson build system, including tests and
> > install. It has the necessary hooks to allow it be used as a subproject
> > for other meson based builds such as mesa.
> > 
> > Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
> > ---
> >  .editorconfig               |   4 +-
> >  amdgpu/.editorconfig        |   5 +-
> >  amdgpu/meson.build          |  70 +++++++-
> >  data/meson.build            |  27 +++-
> >  etnaviv/meson.build         |  64 ++++++-
> >  exynos/meson.build          |  53 +++++-
> >  freedreno/meson.build       |  82 ++++++++-
> >  intel/meson.build           | 111 +++++++++++-
> >  libkms/meson.build          |  75 +++++++-
> >  man/meson.build             |  66 ++++++-
> >  meson.build                 | 378 +++++++++++++++++++++++++++++++++++++-
> >  meson_options.txt           |  38 ++++-
> >  nouveau/meson.build         |  65 ++++++-
> >  omap/meson.build            |  53 +++++-
> >  radeon/meson.build          |  65 ++++++-
> >  tegra/meson.build           |  52 +++++-
> >  tests/amdgpu/meson.build    |  40 ++++-
> >  tests/etnaviv/meson.build   |  54 +++++-
> >  tests/exynos/meson.build    |  54 +++++-
> >  tests/kms/meson.build       |  54 +++++-
> >  tests/kmstest/meson.build   |  28 +++-
> >  tests/meson.build           |  85 ++++++++-
> >  tests/modeprint/meson.build |  29 +++-
> >  tests/nouveau/meson.build   |  30 +++-
> >  tests/proptest/meson.build  |  30 +++-
> >  tests/radeon/meson.build    |  27 +++-
> >  tests/tegra/meson.build     |  27 +++-
> >  tests/util/meson.build      |  37 ++++-
> >  tests/vbltest/meson.build   |  28 +++-
> >  vc4/meson.build             |  28 +++-
> >  30 files changed, 1759 insertions(+)
> >  create mode 100644 amdgpu/meson.build
> >  create mode 100644 data/meson.build
> >  create mode 100644 etnaviv/meson.build
> >  create mode 100644 exynos/meson.build
> >  create mode 100644 freedreno/meson.build
> >  create mode 100644 intel/meson.build
> >  create mode 100644 libkms/meson.build
> >  create mode 100644 man/meson.build
> >  create mode 100644 meson.build
> >  create mode 100644 meson_options.txt
> >  create mode 100644 nouveau/meson.build
> >  create mode 100644 omap/meson.build
> >  create mode 100644 radeon/meson.build
> >  create mode 100644 tegra/meson.build
> >  create mode 100644 tests/amdgpu/meson.build
> >  create mode 100644 tests/etnaviv/meson.build
> >  create mode 100644 tests/exynos/meson.build
> >  create mode 100644 tests/kms/meson.build
> >  create mode 100644 tests/kmstest/meson.build
> >  create mode 100644 tests/meson.build
> >  create mode 100644 tests/modeprint/meson.build
> >  create mode 100644 tests/nouveau/meson.build
> >  create mode 100644 tests/proptest/meson.build
> >  create mode 100644 tests/radeon/meson.build
> >  create mode 100644 tests/tegra/meson.build
> >  create mode 100644 tests/util/meson.build
> >  create mode 100644 tests/vbltest/meson.build
> >  create mode 100644 vc4/meson.build
> > 
> > diff --git a/.editorconfig b/.editorconfig
> > index 893b7be..bbad3e6 100644
> > --- a/.editorconfig
> > +++ b/.editorconfig
> > @@ -17,3 +17,7 @@ indent_style = tab
> >  [*.m4]
> >  indent_style = space
> >  indent_size = 2
> > +
> > +[meson.build,meson_options.txt]
> 
> I think this needs to be
>   [{meson.build,meson_options.txt}]
> 
> > +indent_style = space
> > +indent_size = 2
> > diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig
> > index 2528d67..0c758d6 100644
> > --- a/amdgpu/.editorconfig
> > +++ b/amdgpu/.editorconfig
> > @@ -7,3 +7,8 @@ indent_style = tab
> >  indent_size = 8
> >  tab_width = 8
> >  insert_final_newline = true
> > +
> > +[meson.build]
> > +indent_style = space
> > +indent_size = 2
> 
> These two should be inherited from the .editorconfig one level above
> 
> > +insert_final_newline = false
> 
> That's weird; why?
> 
> > diff --git a/amdgpu/meson.build b/amdgpu/meson.build
> > new file mode 100644
> > index 0000000..13bf88b
> > --- /dev/null
> > +++ b/amdgpu/meson.build
> > @@ -0,0 +1,70 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_amdgpu = files(
> > +  'amdgpu_asic_id.c',
> > +  'amdgpu_bo.c',
> > +  'amdgpu_cs.c',
> > +  'amdgpu_device.c',
> > +  'amdgpu_gpu_info.c',
> > +  'amdgpu_internal.h',
> > +  'amdgpu_vamgr.c',
> > +  'amdgpu_vm.c',
> > +  'util_hash.c',
> > +  'util_hash.h',
> > +  'util_hash_table.c',
> > +  'util_hash_table.h',
> 
> Should we clean up the list in libdrm (even though it's not in mesa),
> and only have files that need to be in these lists?
> Ie. remove all files that are included by other files in the list, such
> as all the headers in this list?
> 
> > +)
> > +
> > +libdrm_amdgpu = shared_library(
> > +  'drm_amdgpu',
> > +  [files_amdgpu, config_file],
> > +  c_args : [
> > +    warn_c_args,
> > +    '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(join_paths(get_option('datadir'), 'amdgpu.ids')),
> 
> This raises the question: do we want to support android?
> Also, isn't there a /libdrm/ missing here?
> 
> > +  ],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> 
> Nit: unnecessary brackets
> 
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('amdgpu.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_amdgpu',
> > +  libraries : libdrm_amdgpu,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to kernel DRM services for amdgpu',
> > +)
> > +
> > +ext_libdrm_amdgpu = declare_dependency(
> > +  link_with : [libdrm, libdrm_amdgpu],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +test(
> > +  'amdgpu-symbol-check',
> > +  prog_bash,
> > +  args : [files('amdgpu-symbol-check'), libdrm_amdgpu]
> > +)
> > diff --git a/data/meson.build b/data/meson.build
> > new file mode 100644
> > index 0000000..4990ca5
> > --- /dev/null
> > +++ b/data/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +if with_amdgpu
> > +  install_data(
> > +    'amdgpu.ids',
> > +    install_mode : 'r--r--r--',
> > +    install_dir : join_paths(get_option('datadir'), 'libdrm'),
> 
> How about setting a variable in amdgpu/meson.build?
> 
> > +  )
> > +endif
> > diff --git a/etnaviv/meson.build b/etnaviv/meson.build
> > new file mode 100644
> > index 0000000..8f39775
> > --- /dev/null
> > +++ b/etnaviv/meson.build
> > @@ -0,0 +1,64 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_etnaviv = files(
> > +  'etnaviv_device.c',
> > +  'etnaviv_gpu.c',
> > +  'etnaviv_bo.c',
> > +  'etnaviv_bo_cache.c',
> > +  'etnaviv_perfmon.c',
> > +  'etnaviv_pipe.c',
> > +  'etnaviv_cmd_stream.c',
> > +  'etnaviv_drm.h',
> > +  'etnaviv_priv.h',
> > +)
> > +
> > +libdrm_etnaviv = shared_library(
> > +  'drm_etnaviv',
> > +  [files_etnaviv, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +  dependencies : [dep_pthread_stubs, dep_rt],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('etnaviv_drmif.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_etnaviv',
> > +  libraries : libdrm_etnaviv,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to Tegra kernel DRM services',
> > +)
> > +
> > +ext_libdrm_etnaviv = declare_dependency(
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +test(
> > +  'etnaviv-symbol-check',
> > +  prog_bash,
> > +  args : [files('etnaviv-symbol-check'), libdrm_etnaviv]
> > +)
> > diff --git a/exynos/meson.build b/exynos/meson.build
> > new file mode 100644
> > index 0000000..7da74aa
> > --- /dev/null
> > +++ b/exynos/meson.build
> > @@ -0,0 +1,53 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_exynos = shared_library(
> > +  'drm_exynos',
> > +  [files('exynos_drm.c', 'exynos_fimg2d.c', 'fimg2d_reg.h'), config_file],
> 
> Why skip files_exynos? I think I prefer the consistency, even if the var
> only contains two files.
> 
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('exynos_drmif.h', subdir : 'libdrm')
> > +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos')
> > +
> > +ext_libdrm_exynos = declare_dependency(
> > +  link_with : [libdrm, libdrm_exynos],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_exynos',
> > +  libraries : libdrm_exynos,
> > +  subdirs : ['.', 'libdrm', 'exynos'],
> > +  version : '0.7',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to exynos kernel DRM services',
> > +)
> > +
> > +test(
> > +  'exynos-symbol-check',
> > +  prog_bash,
> > +  args : [files('exynos-symbol-check'), libdrm_exynos]
> > +)
> > diff --git a/freedreno/meson.build b/freedreno/meson.build
> > new file mode 100644
> > index 0000000..47d6e44
> > --- /dev/null
> > +++ b/freedreno/meson.build
> > @@ -0,0 +1,82 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_freedreno = files(
> > +  'freedreno_device.c',
> > +  'freedreno_pipe.c',
> > +  'freedreno_priv.h',
> > +  'freedreno_ringbuffer.c',
> > +  'freedreno_bo.c',
> > +  'freedreno_bo_cache.c',
> > +  'msm/msm_bo.c',
> > +  'msm/msm_device.c',
> > +  'msm/msm_drm.h',
> > +  'msm/msm_pipe.c',
> > +  'msm/msm_priv.h',
> > +  'msm/msm_ringbuffer.c',
> > +)
> > +
> > +if with_freedreno_kgsl != 'false'
> 
> (mentioned by someone already)
> 
> > +  files_freedreno += files(
> > +    'kgsl/kgsl_bo.c',
> > +    'kgsl/kgsl_device.c',
> > +    'kgsl/kgsl_drm.h',
> > +    'kgsl/kgsl_pipe.c',
> > +    'kgsl/kgsl_priv.h',
> > +    'kgsl/kgsl_ringbuffer.c',
> > +    'kgsl/msm_kgsl.h',
> > +  )
> > +endif
> > +
> > +libdrm_freedreno = shared_library(
> > +  'drm_freedreno',
> > +  [files_freedreno, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
> > +  link_with : libdrm,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_freedreno = declare_dependency(
> > +  link_with : [libdrm, libdrm_freedreno],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +  'freedreno_drmif.h', 'freedreno_ringbuffer.h',
> > +  subdir : 'freedreno'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_freedreno',
> > +  libraries : libdrm_freedreno,
> > +  subdirs : ['.', 'libdrm', 'freedreno'],
> > +  version : '0.7',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to freedreno kernel DRM services',
> > +)
> > +
> > +test(
> > +  'freedreno-symbol-check',
> > +  prog_bash,
> > +  args : [files('freedreno-symbol-check'), libdrm_freedreno]
> > +)
> > diff --git a/intel/meson.build b/intel/meson.build
> > new file mode 100644
> > index 0000000..18f35c0
> > --- /dev/null
> > +++ b/intel/meson.build
> > @@ -0,0 +1,111 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_intel = files(
> > +  'intel_bufmgr.c',
> > +  'intel_bufmgr_priv.h',
> > +  'intel_bufmgr_fake.c',
> > +  'intel_bufmgr_gem.c',
> > +  'intel_decode.c',
> > +  'intel_chipset.h',
> > +  'mm.c',
> > +  'mm.h',
> > +  'uthash.h',
> > +)
> > +
> > +libdrm_intel = shared_library(
> > +  'drm_intel',
> > +  [files_intel, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
> > +  c_args : warn_c_args,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_intel = declare_dependency(
> > +  link_with : [libdrm, libdrm_intel],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +  'intel_bufmgr.h', 'intel_aub.h', 'intel_debug.h',
> > +  subdir : 'libdrm',
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_intel',
> > +  libraries : libdrm_intel,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires : 'libdrm',
> > +  description : 'Userspace interface to intel kernel DRM services',
> > +)
> > +
> > +test_decode = executable(
> > +  'test_decode',
> > +  files('test_decode.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : [libdrm, libdrm_intel],
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test(
> > +  'gen4-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen4-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen45-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gm45-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen5-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen5-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen6-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen6-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen7-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen7-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen7-2d-copy.batch',
> > +  prog_bash,
> > +  args : files('tests/gen7-2d-copy.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'intel-symbol-check',
> > +  prog_bash,
> > +  args : [files('intel-symbol-check'), libdrm_intel]
> > +)
> > diff --git a/libkms/meson.build b/libkms/meson.build
> > new file mode 100644
> > index 0000000..80afc89
> > --- /dev/null
> > +++ b/libkms/meson.build
> > @@ -0,0 +1,75 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libkms_include = [inc_root, inc_drm]
> > +files_libkms = files(
> > +  'internal.h',
> > +  'linux.c',
> > +  'dumb.c',
> > +  'api.c',
> > +)
> > +if with_vmwgfx
> > +  files_libkms += files('vmwgfx.c')
> > +endif
> > +if with_intel
> > +  files_libkms += files('intel.c')
> > +endif
> > +if with_nouveau
> > +  files_libkms += files('nouveau.c')
> > +endif
> > +if with_radeon
> > +  files_libkms += files('radeon.c')
> > +endif
> > +if with_exynos
> > +  files_libkms += files('exynos.c')
> > +  libkms_include += include_directories('../exynos')
> > +endif
> > +
> > +libkms = shared_library(
> > +  'kms',
> > +  [files_libkms, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : libkms_include,
> > +  link_with : libdrm,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libkms = declare_dependency(
> > +  link_with : [libdrm, libkms],
> > +  include_directories : [libkms_include],
> > +)
> > +
> > +install_headers('libkms.h', subdir : 'libkms')
> > +
> > +pkg.generate(
> > +  name : 'libkms',
> > +  libraries : libkms,
> > +  subdirs : ['libkms'],
> > +  version : '1.0.0',
> > +  requires_private : 'libdrm',
> > +  description : 'Library that abstracts away the different mm interfaces for kernel drivers',
> > +)
> > +
> > +test(
> > +  'kms-symbol-check',
> > +  prog_bash,
> > +  args : [files('kms-symbol-check'), libkms]
> > +)
> > diff --git a/man/meson.build b/man/meson.build
> > new file mode 100644
> > index 0000000..0b2efe5
> > --- /dev/null
> > +++ b/man/meson.build
> > @@ -0,0 +1,66 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +xsltproc_args = [
> > +  '--stringparam', 'man.authors.section.enabled', '0',
> > +  '--stringparam', 'man.copyright.section.enabled', '0',
> > +  '--stringparam', 'funcsynopsis.style', 'ansi',
> > +  '--stringparam', 'man.output.quietly', '1',
> > +  '--nonet', manpage_style,
> > +]
> > +
> > +xmls = [
> > +  ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'],
> > +  ['drmHandleEvent', '3'], ['drmModeGetResources', '3']
> > +]
> > +foreach x : xmls
> > +  m = x[0]
> > +  s = x[1]
> > +  custom_target(
> > +    m,
> > +    input : files('@0@.xml'.format(m)),
> > +    output : '@0@.@1@'.format(m, s),
> > +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'],
> > +    install : true,
> > +    install_dir : join_paths(get_option('datadir'), 'man', 'man@0@'.format(s)),
> 
> get_option('mandir')
> 
> > +    build_by_default : true,
> > +  )
> > +endforeach
> > +
> > +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm']
> > +  gen = custom_target(
> > +    'gen-@0@'.format(x),
> > +    input : 'drm-memory.xml',
> > +    output : '@0@.xml'.format(x),
> > +    command : [prog_sed, '-e',
> > +               's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@',
> > +               '@INPUT@'],
> > +    capture : true,
> > +  )
> > +  custom_target(
> > +    '@0@.7'.format(x),
> > +    input : gen,
> > +    output : '@0@.7'.format(x, '7'),
> > +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'],
> > +    install : true,
> > +    install_dir : join_paths(get_option('datadir'), 'man', 'man7'),
> 
> ditto: mandir
> 
> > +    build_by_default : true,
> > +  )
> > +endforeach
> > diff --git a/meson.build b/meson.build
> > new file mode 100644
> > index 0000000..74ae222
> > --- /dev/null
> > +++ b/meson.build
> > @@ -0,0 +1,378 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +project(
> > +  'libdrm',
> > +  ['c'],
> > +  version : '2.4.89',
> > +  license : 'MIT',
> > +  default_options : ['buildtype=debugoptimized', 'c_std=gnu99'],
> 
> gnu99, are you sure?
> 
> also, we should specify the version of meson we support here:
> +  meson_version : '>= 0.42',
> 
> > +)
> > +
> > +pkg = import('pkgconfig')
> > +
> > +with_udev = get_option('udev')
> > +with_freedreno_kgsl = get_option('freedreno-kgls')
> > +with_install_tests = get_option('install_test_programs')
> > +with_cairo_tests = get_option('cairo_tests')
> > +with_valgrind = get_option('valgrind')
> > +
> > +config = configuration_data()
> > +
> > +# TODO: openbsd is guess, the others are correct
> > +if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system())
> 
> Let's make that *BSD until we know of a special case?
>   if host_machine.system().to_upper.endswith('BSD')
> 
> > +  dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4')
> > +else
> > +  dep_pthread_stubs = []
> > +endif
> > +dep_threads = dependency('threads')
> > +
> > +cc = meson.get_compiler('c')
> > +# Check for atomics
> > +if cc.compiles('''
> > +    int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
> > +    int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
> > +    ''',
> > +    name : 'Intel Atomics')
> > +  config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', true)
> 
> Will be unset in the other cases, instead of being set to 0
> 
> > +  with_atomics = true
> > +elif cc.has_header('atomic_ops.h')
> > +  config.set10('HAVE_LIB_ATOMIC_OPS', true)
> 
> Ditto.
> 
> Those can be easily fixed by setting them to false first, just before
> the if chain:
>   config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', false)
>   config.set10('HAVE_LIB_ATOMIC_OPS', false)
> 
> > +  with_atomics = true
> > +elif cc.has_function('atomic_cas_uint')
> > +  with_atomics = true
> > +else
> > +  with_atomics = false
> > +endif
> > +
> > +with_intel = false
> > +_intel = get_option('intel')
> > +if _intel != 'false'
> > +  if _intel == 'true' and not with_atomics
> > +    error('libdrm_intel requires atomics.')
> > +  endif
> > +  with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86')
> > +endif
> > +
> > +with_radoen = false
> 
> typo
> 
> > +_radeon = get_option('radeon')
> > +if _radeon != 'false'
> > +  if _radeon == 'true' and not with_atomics
> > +    error('libdrm_radeon requires atomics.')
> > +  endif
> > +  with_radeon = true
> > +endif
> > +
> > +with_amdgpu = false
> > +_amdgpu = get_option('amdgpu')
> > +if _amdgpu != 'false'
> > +  if _amdgpu == 'true' and not with_atomics
> > +    error('libdrm_amdgpu requires atomics.')
> > +  endif
> > +  with_amdgpu = true
> > +endif
> > +
> > +with_nouveau = false
> > +_nouveau = get_option('nouveau')
> > +if _nouveau != 'false'
> > +  if _nouveau == 'true' and not with_atomics
> > +    error('libdrm_nouveau requires atomics.')
> > +  endif
> > +  with_nouveau = true
> > +endif
> > +
> > +with_vmwgfx = false
> > +_vmwgfx = get_option('vmwgfx')
> > +if _vmwgfx != 'false'
> > +  with_vmwgfx = true
> > +endif
> > +
> > +with_omap = false
> > +_omap = get_option('omap')
> > +if _omap != 'false'
> > +  if _omap == 'true' and not with_atomics
> > +    error('libdrm_omap requires atomics.')
> > +  endif
> > +  with_omap = _omap == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_freedreno = false
> > +_freedreno = get_option('freedreno')
> > +if _freedreno != 'false'
> > +  if _freedreno == 'true' and not with_atomics
> > +    error('libdrm_freedreno requires atomics.')
> > +  endif
> > +  with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_tegra = false
> > +_tegra = get_option('tegra')
> > +if _tegra != 'false'
> > +  if _tegra == 'true' and not with_atomics
> > +    error('libdrm_tegra requires atomics.')
> > +  endif
> > +  with_tegra = _tegra == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_etnaviv = false
> > +_etnaviv = get_option('etnaviv')
> > +if _etnaviv != 'false'
> > +  if _etnaviv == 'true' and not with_atomics
> > +    error('libdrm_etnaviv requires atomics.')
> > +  endif
> > +  with_etnaviv = _etnaviv == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_exynos = false
> > +_exynos = get_option('exynos')
> > +if _exynos != 'false'
> > +  with_exynos = _exynos == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_vc4 = false
> > +_vc4 = get_option('vc4')
> > +if _vc4 != 'false'
> > +  with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +# XXX: Aparently only freebsd and dragonfly bsd actually need this (and
> > +# gnu/kfreebsd), not openbsd and netbsd
> > +with_libkms = false
> > +_libkms = get_option('libkms')
> > +if _libkms != 'false'
> > +  with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system())
> > +endif
> > +
> > +if with_udev
> > +  dep_udev = dependency('udev')
> > +  config.set10('UDEV', true)
> > +else
> > +  dep_udev = []
> > +endif
> > +
> > +# Among others FreeBSD does not have a separate dl library.
> > +if not cc.has_function('dlsym')
> > +  dep_dl = cc.find_library('dl', required : with_nouveau)
> > +else
> > +  dep_dl = []
> > +endif
> > +# clock_gettime might require -rt, or it might not. find out
> > +if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>')
> > +  # XXX: untested
> > +  dep_rt = cc.find_library('rt')
> > +else
> > +  dep_rt = []
> > +endif
> > +dep_m = cc.find_library('m', required : false)
> > +if cc.has_header('sys/sysctl.h')
> > +  config.set10('HAVE_SYS_SYSCTL_H', true)
> > +endif
> > +if cc.has_header('sys/select.h')
> > +  config.set10('HAVE_SYS_SELECT_H', true)
> > +endif
> > +if cc.has_header_symbol('sys/sysmacros.h', 'major')
> > +  config.set10('MAJOR_IN_SYSMACROS', true)
> > +elif cc.has_header_symbol('sys/mkdev.h', 'major')
> > +  config.set10('MAJOR_IN_MKDEV', true)
> > +endif
> > +if cc.has_function('open_memstream')
> > +  config.set10('HAVE_OPEN_MEMSTREAM', true)
> > +endif
> > +
> > +warn_c_args = []
> > +foreach a : ['-Wall', '-Wextra', '-Wsign-compare', 
> > +             '-Werror-implicit-function-declaration', '-Wpointer-arith',
> > +             '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes',
> > +             '-Wmissing-declarations', '-Wnested-externs', '-Wpacked',
> > +             '-Wswitch-enum', '-Wmissing-format-attribute', 
> > +             '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', 
> > +             '-Wdeclaration-after-statement', '-Wold-style-definition']
> > +  if cc.has_argument(a)
> > +    warn_c_args += a
> > +  endif
> > +endforeach
> > +# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list
> > +# of options
> > +foreach a : ['unused-parameter', 'attributes', 'long-long', 
> > +             'missing-field-initializers']
> > +  if cc.has_argument('-W@0@'.format(a))
> > +    warn_c_args += '-Wno-@0@'.format(a)
> > +  endif
> > +endforeach
> > +
> > +
> > +dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel)
> > +dep_cunit = dependency('cunit', version : '>= 2.1', required : false)
> > +dep_cairo = dependency('cairo', required : with_cairo_tests == 'true')
> > +dep_valgrind = dependency('valgrind', required : with_valgrind == 'true')
> > +
> > +with_man_pages = get_option('man_pages')
> > +prog_xslt = find_program('xsltproc', required : with_man_pages == 'true')
> > +prog_sed = find_program('sed', required : with_man_pages == 'true')
> > +manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
> > +if prog_xslt.found()
> > +  if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0
> > +    if with_man_pages == 'true'
> > +      error('Manpage style sheet cannot be found')
> > +    endif
> > +    with_man_pages = 'false'
> > +  endif
> > +endif
> > +with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found()
> > +
> > +# Used for tets
> > +prog_bash = find_program('bash')
> > +
> > +if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''',
> > +               name : 'compiler supports __attribute__(("hidden"))')
> > +  config.set10('HAVE_VISIBILITY', true)
> > +endif
> > +
> > +foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'],
> > +             [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'],
> > +             [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'],
> > +             [with_tegra, 'TEGRA'], [with_vc4, 'VC4'],
> > +             [with_etnaviv, 'ETNAVIV'], [with_install_tests, 'INSTALL_TESTS']]
> 
> HAVE_INSTALL_TESTS is not used in C files, you can remove it from this list :)
> 
> > +  e = t[0]
> > +  if e
> 
> Why the temp var?
> 
> > +    config.set10('HAVE_@0@'.format(t[1]), true)
> 
> I'll add -Wundef when I have some time and go through those so we can have
>   config.set10('HAVE_@0@'.format(t[1]), t[0])
> 
> Then we can eventually switch to -Werror=undef :D
> 
> > +  endif
> > +endforeach
> > +if with_freedreno_kgsl
> > +  if not with_freedreno
> > +    error('cannot enable freedreno-kgsl without freedreno support')
> > +  endif
> > +  config.set10('HAVE_FREEDRENO_KGSL', true)
> > +endif
> 
> > +if with_amdgpu
> > +  config.set10('HAVE_AMDGPU', true)
> > +  if dep_cunit.found()
> > +    config.set10('HAVE_CUNIT', true)
> > +  endif
> > +endif
> 
> These two are actually unused, and should be removed from configure.ac :)
> 
> > +if dep_cairo.found()
> > +  config.set10('HAVE_CAIRO', true)
> > +endif
> > +if dep_valgrind.found()
> > +  config.set10('HAVE_VALGRIND', true)
> > +endif
> > +
> > +config.set10('_GNU_SOURCE', true)
> > +config_file = configure_file(
> > +  configuration : config,
> > +  output : 'config.h',
> > +)
> > +add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
> > +
> > +inc_root = include_directories('.')
> > +inc_drm = include_directories('include/drm')
> > +
> > +files_libdrm = files(
> > +	'xf86drm.c',
> > +	'xf86drmHash.c',
> > +	'xf86drmHash.h',
> > +	'xf86drmRandom.c',
> > +	'xf86drmRandom.h',
> > +	'xf86drmSL.c',
> > +	'xf86drmMode.c',
> > +	'xf86atomic.h',
> > +	'libdrm_macros.h',
> > +	'libdrm_lists.h',
> > +	'util_double_list.h',
> > +	'util_math.h',
> > +)
> > +
> > +libdrm = shared_library(
> > +  'drm',
> > +  [files_libdrm, config_file],
> > +  c_args : warn_c_args,
> > +  dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m],
> > +  include_directories : inc_drm,
> > +  version : '2.4.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm = declare_dependency(
> > +  link_with : libdrm,
> > +  include_directories : inc_drm,
> > +)
> > +
> > +install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h')
> > +install_headers(
> > +	'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h',
> > +	'include/drm/drm_sarea.h', 'include/drm/i915_drm.h',
> > +	'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
> > +	'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h',
> > +	'include/drm/r128_drm.h', 'include/drm/radeon_drm.h',
> > +	'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h',
> > +	'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
> > +	'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
> 
> Do we want to only install the headers for the libs that are enabled?
> (Not sure what autotools does)
> 
> > +  subdir : 'libdrm',
> > +)
> > +if with_vmwgfx
> > +  install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm')
> > +endif
> > +
> > +pkg.generate(
> > +  name : 'libdrm',
> > +  libraries : libdrm,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  description : 'Userspace interface to kernel DRM services',
> > +)
> > + 
> > +if with_libkms
> > +  subdir('libkms')
> > +endif
> > +if with_intel
> > +  subdir('intel')
> > +endif
> > +if with_nouveau
> > +  subdir('nouveau')
> > +endif
> > +if with_radeon
> > +  subdir('radeon')
> > +endif
> > +if with_amdgpu
> > +  subdir('amdgpu')
> > +endif
> > +if with_omap
> > +  subdir('omap')
> > +endif
> > +if with_exynos
> > +  subdir('exynos')
> > +endif
> > +if with_freedreno
> > +  subdir('freedreno')
> > +endif
> > +if with_tegra
> > +  subdir('tegra')
> > +endif
> > +if with_vc4
> > +  subdir('vc4')
> > +endif
> > +if with_etnaviv
> > +  subdir('etnaviv')
> > +endif
> > +if with_man_pages
> > +  subdir('man')
> > +endif
> > +subdir('data')
> > +subdir('tests')
> > diff --git a/meson_options.txt b/meson_options.txt
> > new file mode 100644
> > index 0000000..7c2fa4f
> > --- /dev/null
> > +++ b/meson_options.txt
> > @@ -0,0 +1,38 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +option('libkms',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('intel',       type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('radeon',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('nouveau',     type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true', 'false', 'auto'])
> > +option('omap',        type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('exynos',      type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('freedreno',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('tegra',       type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('vc4',         type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('etnaviv',     type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('man_pages',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('valgrind',    type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('freedreno-kgls',        type : 'boolean', value : false)
> > +option('install_test_programs', type : 'boolean', value : false)
> > +option('udev',                  type : 'boolean', value : false)
> 
> (as mentioned, descriptions would be good; copy/pasting the ones in
> configure.ac should be enough)
> 
> > diff --git a/nouveau/meson.build b/nouveau/meson.build
> > new file mode 100644
> > index 0000000..a50e4f7
> > --- /dev/null
> > +++ b/nouveau/meson.build
> > @@ -0,0 +1,65 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_nouveau = files(
> > +	'nouveau.c',
> > +	'pushbuf.c',
> > +	'bufctx.c',
> > +	'abi16.c',
> > +	'private.h',
> > +)
> > +
> > +libdrm_nouveau = shared_library(
> > +  'drm_nouveau',
> > +  [files_nouveau, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_threads,
> > +  version : '2.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_nouveau = declare_dependency(
> > +  link_with : [libdrm, libdrm_nouveau],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('nouveau.h', subdir : 'libdrm/nouveau')
> > +install_headers(
> > +  'nvif/class.h', 'nvif/cl0080.h', 'nvif/cl9097.h', 'nvif/if0002.h',
> > +  'nvif/if0003.h', 'nvif/ioctl.h', 'nvif/unpack.h',
> > +  subdir : 'libdrm/nouveau/nvif'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_nouveau',
> > +  libraries : libdrm_nouveau,
> > +  subdirs : ['.', 'nouveau'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to nouveau kernel DRM services',
> > +)
> > +
> > +test(
> > +  'nouveau-symbol-check',
> > +  prog_bash,
> > +  args : [files('nouveau-symbol-check'), libdrm_nouveau]
> > +)
> > diff --git a/omap/meson.build b/omap/meson.build
> > new file mode 100644
> > index 0000000..1881087
> > --- /dev/null
> > +++ b/omap/meson.build
> > @@ -0,0 +1,53 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_omap = shared_library(
> > +  'drm_omap',
> > +  [files('omap_drm.c'), config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  c_args : warn_c_args,
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_omap = declare_dependency(
> > +  link_with : [libdrm, libdrm_omap],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('omap_drmif.h', subdir : 'libdrm')
> > +install_headers('omap_drm.h', subdir : 'omap')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_omap',
> > +  libraries : libdrm_omap,
> > +  subdirs : ['.', 'libdrm', 'omap'],
> > +  version : '0.6',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to omap kernel DRM services',
> > +)
> > +
> > +test(
> > +  'omap-symbol-check',
> > +  prog_bash,
> > +  args : [files('omap-symbol-check'), libdrm_omap]
> > +)
> > diff --git a/radeon/meson.build b/radeon/meson.build
> > new file mode 100644
> > index 0000000..f41c5c4
> > --- /dev/null
> > +++ b/radeon/meson.build
> > @@ -0,0 +1,65 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_radeon = files(
> > +	'radeon_bo_gem.c',
> > +	'radeon_cs_gem.c',
> > +	'radeon_cs_space.c',
> > +	'radeon_bo.c',
> > +	'radeon_cs.c',
> > +	'radeon_surface.c',
> > +)
> > +
> > +libdrm_radeon = shared_library(
> > +  'drm_radeon',
> > +  [files_radeon, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.1',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_radeon = declare_dependency(
> > +  link_with : [libdrm, libdrm_radeon],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +	'radeon_bo.h', 'radeon_cs.h', 'radeon_surface.h', 'radeon_bo_gem.h',
> > +	'radeon_cs_gem.h', 'radeon_bo_int.h', 'radeon_cs_int.h', 'r600_pci_ids.h',
> > +  subdir : 'libdrm'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_radeon',
> > +  libraries : libdrm_radeon,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to kernel DRM services for radeon',
> > +)
> > +
> > +test(
> > +  'radeon-symbol-check',
> > +  prog_bash,
> > +  args : [files('radeon-symbol-check'), libdrm_radeon]
> > +)
> > diff --git a/tegra/meson.build b/tegra/meson.build
> > new file mode 100644
> > index 0000000..568531c
> > --- /dev/null
> > +++ b/tegra/meson.build
> > @@ -0,0 +1,52 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_tegra = shared_library(
> > +  'drm_tegra',
> > +  [files('private.h', 'tegra.c'), config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  c_args : warn_c_args,
> > +  version : '0.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_tegra = declare_dependency(
> > +  link_with : [libdrm, libdrm_tegra],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('tegra.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_tegra',
> > +  libraries : libdrm_tegra,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to Tegra kernel DRM services',
> > +)
> > +
> > +test(
> > +  'tegra-symbol-check',
> > +  prog_bash,
> > +  args : [files('tegra-symbol-check'), libdrm_tegra]
> > +)
> > diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
> > new file mode 100644
> > index 0000000..5a07ce2
> > --- /dev/null
> > +++ b/tests/amdgpu/meson.build
> > @@ -0,0 +1,40 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_amdgpu_test = files(
> > +  'amdgpu_test.c',
> > +  'basic_tests.c',
> > +  'bo_tests.c',
> > +  'cs_tests.c',
> > +  'vce_tests.c',
> > +  'uvd_enc_tests.c',
> > +  'vcn_tests.c',
> > +  'deadlock_tests.c',
> > +  'vm_tests.c',
> > +)
> > +
> > +amdgpu_test = executable(
> > +  'amdgpu_test',
> > +  files_amdgpu_test,
> > +  dependencies : [dep_cunit, dep_threads],
> > +  include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')],
> 
> Not a fan of going back up the tree, but... meh
> 
> > +  link_with : [libdrm, libdrm_amdgpu],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build
> > new file mode 100644
> > index 0000000..32c5cee
> > --- /dev/null
> > +++ b/tests/etnaviv/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_etnaviv_tests = [inc_root, inc_drm, include_directories('../../etnaviv')]
> > +
> > +etnaviv_2d_test_files = files(
> > +  'cmdstream.xml.h',
> > +  'etnaviv_2d_test.c',
> > +  'state.xml.h',
> > +  'state_2d.xml.h',
> > +  'write_bmp.c',
> > +  'write_bmp.h',
> > +)
> > +
> > +etnaviv_2d_test = executable(
> > +  'etnaviv_2d_test',
> > +  etnaviv_2d_test_files,
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > +
> > +etnaviv_cmd_stream_test = executable(
> > +  'etnaviv_cmd_stream_test',
> > +  files('etnaviv_cmd_stream_test.c'),
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > +
> > +etnaviv_bo_cache_test = executable(
> > +  'etnaviv_bo_cache_test',
> > +  files('etnaviv_bo_cache_test.c'),
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/exynos/meson.build b/tests/exynos/meson.build
> > new file mode 100644
> > index 0000000..940c3ce
> > --- /dev/null
> > +++ b/tests/exynos/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_exynos = include_directories('../../exynos')
> > +
> > +if with_libkms
> > +  exynos_fimg2d_test = executable(
> > +    'exynos_fimg2d_test',
> > +    files('exynos_fimg2d_test.c'),
> > +    c_args : warn_c_args,
> > +    include_directories : [inc_root, inc_drm, inc_exynos,
> > +                           include_directories('../../libkms')],
> > +    link_with : [libdrm, libkms, libdrm_exynos],
> > +    dependencies : dep_threads,
> > +    install : with_install_tests,
> > +  )
> > +endif
> > +
> > +exynos_fimg2d_perf = executable(
> > +  'exynos_fimg2d_perf',
> > +  files('exynos_fimg2d_perf.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm, inc_exynos],
> > +  link_with : [libdrm, libdrm_exynos],
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > +
> > +exynos_fimg2d_event = executable(
> > +  'exynos_fimg2d_event',
> > +  files('exynos_fimg2d_event.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm, inc_exynos],
> > +  link_with : [libdrm, libdrm_exynos],
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/kms/meson.build b/tests/kms/meson.build
> > new file mode 100644
> > index 0000000..e991913
> > --- /dev/null
> > +++ b/tests/kms/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libkms_test_files = files(
> > +	'libkms-test.h',
> > +	'libkms-test-crtc.c',
> > +	'libkms-test-device.c',
> > +	'libkms-test-framebuffer.c',
> > +	'libkms-test-plane.c',
> > +	'libkms-test-screen.c',
> > +)
> > +
> > +libkms_test = static_library(
> > +  'kms-test',
> > +  libkms_test_files,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +kms_steal_crtc = executable(
> > +  'kms-steal-crtc',
> > +  files('kms-steal-crtc.c'),
> > +  dependencies : dep_cairo,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libkms_test, libutil],
> > +  install : with_install_tests,
> > +)
> > +
> > +kms_universal_planes = executable(
> > +  'kms-universal-lanes',
> > +  files('kms-universal-planes.c'),
> > +  dependencies : dep_cairo,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libkms_test],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/kmstest/meson.build b/tests/kmstest/meson.build
> > new file mode 100644
> > index 0000000..f713f26
> > --- /dev/null
> > +++ b/tests/kmstest/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +kmstest = executable(
> > +  'kmstest',
> > +  files('main.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, include_directories('../../libkms'), inc_drm],
> > +  link_with : [libutil, libkms, libdrm],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/meson.build b/tests/meson.build
> > new file mode 100644
> > index 0000000..960ff7b
> > --- /dev/null
> > +++ b/tests/meson.build
> > @@ -0,0 +1,85 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_tests = include_directories('.')
> > +
> > +subdir('util')
> > +subdir('kms')
> > +subdir('modeprint')
> > +subdir('proptest')
> > +subdir('vbltest')
> > +if with_libkms
> > +  subdir('kmstest')
> > +endif
> > +if with_radeon
> > +  subdir('radeon')
> > +endif
> > +if with_amdgpu and dep_cunit.found()
> 
> I feel like the dep_cunit.found() condition belongs inside
> tests/amdgpu/meson.build, around the relevant test.
> 
> > +  subdir('amdgpu')
> > +endif
> > +if with_exynos
> > +  subdir('exynos')
> > +endif
> > +if with_tegra
> > +  subdir('tegra')
> > +endif
> > +if with_etnaviv
> > +  subdir('etnaviv')
> > +endif
> > +if with_nouveau
> > +  subdir('nouveau')
> > +endif
> > +
> > +drmsl = executable(
> > +  'drmsl',
> > +  files('drmsl.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +hash = executable(
> > +  'hash',
> > +  files('hash.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +random = executable(
> > +  'random',
> > +  files('random.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +drmdevice = executable(
> > +  'drmdevice',
> > +  files('drmdevice.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test('random', random, timeout : 240)
> > +test('hash', hash)
> > +test('drmsl', drmsl)
> > +test('drmdevice', drmdevice)
> > diff --git a/tests/modeprint/meson.build b/tests/modeprint/meson.build
> > new file mode 100644
> > index 0000000..5f0eb24
> > --- /dev/null
> > +++ b/tests/modeprint/meson.build
> > @@ -0,0 +1,29 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +modeprint = executable(
> > +  'modeprint',
> > +  files('modeprint.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/nouveau/meson.build b/tests/nouveau/meson.build
> > new file mode 100644
> > index 0000000..f5d73c1
> > --- /dev/null
> > +++ b/tests/nouveau/meson.build
> > @@ -0,0 +1,30 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +threaded = executable(
> > +  'threaded',
> > +  files('threaded.c'),
> > +  dependencies : [dep_dl, dep_threads],
> > +  include_directories : [inc_root, inc_drm, include_directories('../../nouveau')],
> > +  link_with : [libdrm, libdrm_nouveau],
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test('threaded', threaded)
> > diff --git a/tests/proptest/meson.build b/tests/proptest/meson.build
> > new file mode 100644
> > index 0000000..dcd724f
> > --- /dev/null
> > +++ b/tests/proptest/meson.build
> > @@ -0,0 +1,30 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +proptest_files = files('proptest.c')
> > +
> > +proptest = executable(
> > +  'proptest',
> > +  files('proptest.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libdrm, libutil],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/radeon/meson.build b/tests/radeon/meson.build
> > new file mode 100644
> > index 0000000..54db231
> > --- /dev/null
> > +++ b/tests/radeon/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +radeon_ttm = executable(
> > +  'radeon_ttm',
> > +  files('rbo.c', 'rbo.h', 'radeon_ttm.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build
> > new file mode 100644
> > index 0000000..9c74ac4
> > --- /dev/null
> > +++ b/tests/tegra/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +openclose = executable(
> > +  'openclose',
> > +  files('openclose.c'),
> > +  include_directories : [inc_root, inc_drm, include_directories('../../tegra')],
> > +  c_args : warn_c_args,
> > +  link_with : [libdrm, libdrm_tegra],
> > +)
> > diff --git a/tests/util/meson.build b/tests/util/meson.build
> > new file mode 100644
> > index 0000000..a0e1d3c
> > --- /dev/null
> > +++ b/tests/util/meson.build
> > @@ -0,0 +1,37 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +util_files = files(
> > +  'common.h',
> > +  'format.c',
> > +  'format.h',
> > +  'kms.c',
> > +  'kms.h',
> > +  'pattern.c',
> > +  'pattern.h',
> > +)
> > +
> > +libutil = static_library(
> > +  'util',
> > +  [util_files, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_cairo
> > +)
> > diff --git a/tests/vbltest/meson.build b/tests/vbltest/meson.build
> > new file mode 100644
> > index 0000000..4fb1ad3
> > --- /dev/null
> > +++ b/tests/vbltest/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +vbltest = executable(
> > +  'vbltest',
> > +  files('vbltest.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libdrm, libutil],
> > +  install : with_install_tests,
> > +)
> > diff --git a/vc4/meson.build b/vc4/meson.build
> > new file mode 100644
> > index 0000000..0136987
> > --- /dev/null
> > +++ b/vc4/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +install_headers('vc4_packet.h', 'vc4_qpu_defines.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_vc4',
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to vc4 kernel DRM services',
> > +)
> > -- 
> > git-series 0.9.1
> 
> I think everything else looks good; thanks for the effort!
Dylan Baker Jan. 5, 2018, 7:52 p.m. UTC | #6
Quoting Eric Engestrom (2018-01-05 05:34:53)
> On Wednesday, 2018-01-03 13:31:28 -0800, Dylan Baker wrote:
> > This patch adds a complete meson build system, including tests and
> > install. It has the necessary hooks to allow it be used as a subproject
> > for other meson based builds such as mesa.
> > 
> > Signed-off-by: Dylan Baker <dylan.c.baker@intel.com>
> > ---
> >  .editorconfig               |   4 +-
> >  amdgpu/.editorconfig        |   5 +-
> >  amdgpu/meson.build          |  70 +++++++-
> >  data/meson.build            |  27 +++-
> >  etnaviv/meson.build         |  64 ++++++-
> >  exynos/meson.build          |  53 +++++-
> >  freedreno/meson.build       |  82 ++++++++-
> >  intel/meson.build           | 111 +++++++++++-
> >  libkms/meson.build          |  75 +++++++-
> >  man/meson.build             |  66 ++++++-
> >  meson.build                 | 378 +++++++++++++++++++++++++++++++++++++-
> >  meson_options.txt           |  38 ++++-
> >  nouveau/meson.build         |  65 ++++++-
> >  omap/meson.build            |  53 +++++-
> >  radeon/meson.build          |  65 ++++++-
> >  tegra/meson.build           |  52 +++++-
> >  tests/amdgpu/meson.build    |  40 ++++-
> >  tests/etnaviv/meson.build   |  54 +++++-
> >  tests/exynos/meson.build    |  54 +++++-
> >  tests/kms/meson.build       |  54 +++++-
> >  tests/kmstest/meson.build   |  28 +++-
> >  tests/meson.build           |  85 ++++++++-
> >  tests/modeprint/meson.build |  29 +++-
> >  tests/nouveau/meson.build   |  30 +++-
> >  tests/proptest/meson.build  |  30 +++-
> >  tests/radeon/meson.build    |  27 +++-
> >  tests/tegra/meson.build     |  27 +++-
> >  tests/util/meson.build      |  37 ++++-
> >  tests/vbltest/meson.build   |  28 +++-
> >  vc4/meson.build             |  28 +++-
> >  30 files changed, 1759 insertions(+)
> >  create mode 100644 amdgpu/meson.build
> >  create mode 100644 data/meson.build
> >  create mode 100644 etnaviv/meson.build
> >  create mode 100644 exynos/meson.build
> >  create mode 100644 freedreno/meson.build
> >  create mode 100644 intel/meson.build
> >  create mode 100644 libkms/meson.build
> >  create mode 100644 man/meson.build
> >  create mode 100644 meson.build
> >  create mode 100644 meson_options.txt
> >  create mode 100644 nouveau/meson.build
> >  create mode 100644 omap/meson.build
> >  create mode 100644 radeon/meson.build
> >  create mode 100644 tegra/meson.build
> >  create mode 100644 tests/amdgpu/meson.build
> >  create mode 100644 tests/etnaviv/meson.build
> >  create mode 100644 tests/exynos/meson.build
> >  create mode 100644 tests/kms/meson.build
> >  create mode 100644 tests/kmstest/meson.build
> >  create mode 100644 tests/meson.build
> >  create mode 100644 tests/modeprint/meson.build
> >  create mode 100644 tests/nouveau/meson.build
> >  create mode 100644 tests/proptest/meson.build
> >  create mode 100644 tests/radeon/meson.build
> >  create mode 100644 tests/tegra/meson.build
> >  create mode 100644 tests/util/meson.build
> >  create mode 100644 tests/vbltest/meson.build
> >  create mode 100644 vc4/meson.build
> > 
> > diff --git a/.editorconfig b/.editorconfig
> > index 893b7be..bbad3e6 100644
> > --- a/.editorconfig
> > +++ b/.editorconfig
> > @@ -17,3 +17,7 @@ indent_style = tab
> >  [*.m4]
> >  indent_style = space
> >  indent_size = 2
> > +
> > +[meson.build,meson_options.txt]
> 
> I think this needs to be
>   [{meson.build,meson_options.txt}]

You might be right.

> 
> > +indent_style = space
> > +indent_size = 2
> > diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig
> > index 2528d67..0c758d6 100644
> > --- a/amdgpu/.editorconfig
> > +++ b/amdgpu/.editorconfig
> > @@ -7,3 +7,8 @@ indent_style = tab
> >  indent_size = 8
> >  tab_width = 8
> >  insert_final_newline = true
> > +
> > +[meson.build]
> > +indent_style = space
> > +indent_size = 2
> 
> These two should be inherited from the .editorconfig one level above

Nope, because the group right above this is [*], which overrides everything
above it.

> 
> > +insert_final_newline = false
> 
> That's weird; why?

I'll drop it

> 
> > diff --git a/amdgpu/meson.build b/amdgpu/meson.build
> > new file mode 100644
> > index 0000000..13bf88b
> > --- /dev/null
> > +++ b/amdgpu/meson.build
> > @@ -0,0 +1,70 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_amdgpu = files(
> > +  'amdgpu_asic_id.c',
> > +  'amdgpu_bo.c',
> > +  'amdgpu_cs.c',
> > +  'amdgpu_device.c',
> > +  'amdgpu_gpu_info.c',
> > +  'amdgpu_internal.h',
> > +  'amdgpu_vamgr.c',
> > +  'amdgpu_vm.c',
> > +  'util_hash.c',
> > +  'util_hash.h',
> > +  'util_hash_table.c',
> > +  'util_hash_table.h',
> 
> Should we clean up the list in libdrm (even though it's not in mesa),
> and only have files that need to be in these lists?
> Ie. remove all files that are included by other files in the list, such
> as all the headers in this list?
> 
> > +)
> > +
> > +libdrm_amdgpu = shared_library(
> > +  'drm_amdgpu',
> > +  [files_amdgpu, config_file],
> > +  c_args : [
> > +    warn_c_args,
> > +    '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(join_paths(get_option('datadir'), 'amdgpu.ids')),
> 
> This raises the question: do we want to support android?
> Also, isn't there a /libdrm/ missing here?

Android has it's own adroid.mk build system, and I don't see any special logic
in libdrm for the ARC++ stuff used by chromeOS like mesa has.

> 
> > +  ],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> 
> Nit: unnecessary brackets
> 
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('amdgpu.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_amdgpu',
> > +  libraries : libdrm_amdgpu,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to kernel DRM services for amdgpu',
> > +)
> > +
> > +ext_libdrm_amdgpu = declare_dependency(
> > +  link_with : [libdrm, libdrm_amdgpu],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +test(
> > +  'amdgpu-symbol-check',
> > +  prog_bash,
> > +  args : [files('amdgpu-symbol-check'), libdrm_amdgpu]
> > +)
> > diff --git a/data/meson.build b/data/meson.build
> > new file mode 100644
> > index 0000000..4990ca5
> > --- /dev/null
> > +++ b/data/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +if with_amdgpu
> > +  install_data(
> > +    'amdgpu.ids',
> > +    install_mode : 'r--r--r--',
> > +    install_dir : join_paths(get_option('datadir'), 'libdrm'),
> 
> How about setting a variable in amdgpu/meson.build?
> 
> > +  )
> > +endif
> > diff --git a/etnaviv/meson.build b/etnaviv/meson.build
> > new file mode 100644
> > index 0000000..8f39775
> > --- /dev/null
> > +++ b/etnaviv/meson.build
> > @@ -0,0 +1,64 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_etnaviv = files(
> > +  'etnaviv_device.c',
> > +  'etnaviv_gpu.c',
> > +  'etnaviv_bo.c',
> > +  'etnaviv_bo_cache.c',
> > +  'etnaviv_perfmon.c',
> > +  'etnaviv_pipe.c',
> > +  'etnaviv_cmd_stream.c',
> > +  'etnaviv_drm.h',
> > +  'etnaviv_priv.h',
> > +)
> > +
> > +libdrm_etnaviv = shared_library(
> > +  'drm_etnaviv',
> > +  [files_etnaviv, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +  dependencies : [dep_pthread_stubs, dep_rt],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('etnaviv_drmif.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_etnaviv',
> > +  libraries : libdrm_etnaviv,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to Tegra kernel DRM services',
> > +)
> > +
> > +ext_libdrm_etnaviv = declare_dependency(
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +test(
> > +  'etnaviv-symbol-check',
> > +  prog_bash,
> > +  args : [files('etnaviv-symbol-check'), libdrm_etnaviv]
> > +)
> > diff --git a/exynos/meson.build b/exynos/meson.build
> > new file mode 100644
> > index 0000000..7da74aa
> > --- /dev/null
> > +++ b/exynos/meson.build
> > @@ -0,0 +1,53 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_exynos = shared_library(
> > +  'drm_exynos',
> > +  [files('exynos_drm.c', 'exynos_fimg2d.c', 'fimg2d_reg.h'), config_file],
> 
> Why skip files_exynos? I think I prefer the consistency, even if the var
> only contains two files.
> 
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +install_headers('exynos_drmif.h', subdir : 'libdrm')
> > +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos')
> > +
> > +ext_libdrm_exynos = declare_dependency(
> > +  link_with : [libdrm, libdrm_exynos],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_exynos',
> > +  libraries : libdrm_exynos,
> > +  subdirs : ['.', 'libdrm', 'exynos'],
> > +  version : '0.7',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to exynos kernel DRM services',
> > +)
> > +
> > +test(
> > +  'exynos-symbol-check',
> > +  prog_bash,
> > +  args : [files('exynos-symbol-check'), libdrm_exynos]
> > +)
> > diff --git a/freedreno/meson.build b/freedreno/meson.build
> > new file mode 100644
> > index 0000000..47d6e44
> > --- /dev/null
> > +++ b/freedreno/meson.build
> > @@ -0,0 +1,82 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_freedreno = files(
> > +  'freedreno_device.c',
> > +  'freedreno_pipe.c',
> > +  'freedreno_priv.h',
> > +  'freedreno_ringbuffer.c',
> > +  'freedreno_bo.c',
> > +  'freedreno_bo_cache.c',
> > +  'msm/msm_bo.c',
> > +  'msm/msm_device.c',
> > +  'msm/msm_drm.h',
> > +  'msm/msm_pipe.c',
> > +  'msm/msm_priv.h',
> > +  'msm/msm_ringbuffer.c',
> > +)
> > +
> > +if with_freedreno_kgsl != 'false'
> 
> (mentioned by someone already)
> 
> > +  files_freedreno += files(
> > +    'kgsl/kgsl_bo.c',
> > +    'kgsl/kgsl_device.c',
> > +    'kgsl/kgsl_drm.h',
> > +    'kgsl/kgsl_pipe.c',
> > +    'kgsl/kgsl_priv.h',
> > +    'kgsl/kgsl_ringbuffer.c',
> > +    'kgsl/msm_kgsl.h',
> > +  )
> > +endif
> > +
> > +libdrm_freedreno = shared_library(
> > +  'drm_freedreno',
> > +  [files_freedreno, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
> > +  link_with : libdrm,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_freedreno = declare_dependency(
> > +  link_with : [libdrm, libdrm_freedreno],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +  'freedreno_drmif.h', 'freedreno_ringbuffer.h',
> > +  subdir : 'freedreno'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_freedreno',
> > +  libraries : libdrm_freedreno,
> > +  subdirs : ['.', 'libdrm', 'freedreno'],
> > +  version : '0.7',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to freedreno kernel DRM services',
> > +)
> > +
> > +test(
> > +  'freedreno-symbol-check',
> > +  prog_bash,
> > +  args : [files('freedreno-symbol-check'), libdrm_freedreno]
> > +)
> > diff --git a/intel/meson.build b/intel/meson.build
> > new file mode 100644
> > index 0000000..18f35c0
> > --- /dev/null
> > +++ b/intel/meson.build
> > @@ -0,0 +1,111 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_intel = files(
> > +  'intel_bufmgr.c',
> > +  'intel_bufmgr_priv.h',
> > +  'intel_bufmgr_fake.c',
> > +  'intel_bufmgr_gem.c',
> > +  'intel_decode.c',
> > +  'intel_chipset.h',
> > +  'mm.c',
> > +  'mm.h',
> > +  'uthash.h',
> > +)
> > +
> > +libdrm_intel = shared_library(
> > +  'drm_intel',
> > +  [files_intel, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
> > +  c_args : warn_c_args,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_intel = declare_dependency(
> > +  link_with : [libdrm, libdrm_intel],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +  'intel_bufmgr.h', 'intel_aub.h', 'intel_debug.h',
> > +  subdir : 'libdrm',
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_intel',
> > +  libraries : libdrm_intel,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires : 'libdrm',
> > +  description : 'Userspace interface to intel kernel DRM services',
> > +)
> > +
> > +test_decode = executable(
> > +  'test_decode',
> > +  files('test_decode.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : [libdrm, libdrm_intel],
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test(
> > +  'gen4-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen4-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen45-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gm45-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen5-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen5-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen6-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen6-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen7-3d.batch',
> > +  prog_bash,
> > +  args : files('tests/gen7-3d.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'gen7-2d-copy.batch',
> > +  prog_bash,
> > +  args : files('tests/gen7-2d-copy.batch.sh'),
> > +  workdir : meson.current_build_dir(),
> > +)
> > +test(
> > +  'intel-symbol-check',
> > +  prog_bash,
> > +  args : [files('intel-symbol-check'), libdrm_intel]
> > +)
> > diff --git a/libkms/meson.build b/libkms/meson.build
> > new file mode 100644
> > index 0000000..80afc89
> > --- /dev/null
> > +++ b/libkms/meson.build
> > @@ -0,0 +1,75 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libkms_include = [inc_root, inc_drm]
> > +files_libkms = files(
> > +  'internal.h',
> > +  'linux.c',
> > +  'dumb.c',
> > +  'api.c',
> > +)
> > +if with_vmwgfx
> > +  files_libkms += files('vmwgfx.c')
> > +endif
> > +if with_intel
> > +  files_libkms += files('intel.c')
> > +endif
> > +if with_nouveau
> > +  files_libkms += files('nouveau.c')
> > +endif
> > +if with_radeon
> > +  files_libkms += files('radeon.c')
> > +endif
> > +if with_exynos
> > +  files_libkms += files('exynos.c')
> > +  libkms_include += include_directories('../exynos')
> > +endif
> > +
> > +libkms = shared_library(
> > +  'kms',
> > +  [files_libkms, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : libkms_include,
> > +  link_with : libdrm,
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libkms = declare_dependency(
> > +  link_with : [libdrm, libkms],
> > +  include_directories : [libkms_include],
> > +)
> > +
> > +install_headers('libkms.h', subdir : 'libkms')
> > +
> > +pkg.generate(
> > +  name : 'libkms',
> > +  libraries : libkms,
> > +  subdirs : ['libkms'],
> > +  version : '1.0.0',
> > +  requires_private : 'libdrm',
> > +  description : 'Library that abstracts away the different mm interfaces for kernel drivers',
> > +)
> > +
> > +test(
> > +  'kms-symbol-check',
> > +  prog_bash,
> > +  args : [files('kms-symbol-check'), libkms]
> > +)
> > diff --git a/man/meson.build b/man/meson.build
> > new file mode 100644
> > index 0000000..0b2efe5
> > --- /dev/null
> > +++ b/man/meson.build
> > @@ -0,0 +1,66 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +xsltproc_args = [
> > +  '--stringparam', 'man.authors.section.enabled', '0',
> > +  '--stringparam', 'man.copyright.section.enabled', '0',
> > +  '--stringparam', 'funcsynopsis.style', 'ansi',
> > +  '--stringparam', 'man.output.quietly', '1',
> > +  '--nonet', manpage_style,
> > +]
> > +
> > +xmls = [
> > +  ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'],
> > +  ['drmHandleEvent', '3'], ['drmModeGetResources', '3']
> > +]
> > +foreach x : xmls
> > +  m = x[0]
> > +  s = x[1]
> > +  custom_target(
> > +    m,
> > +    input : files('@0@.xml'.format(m)),
> > +    output : '@0@.@1@'.format(m, s),
> > +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'],
> > +    install : true,
> > +    install_dir : join_paths(get_option('datadir'), 'man', 'man@0@'.format(s)),
> 
> get_option('mandir')
> 
> > +    build_by_default : true,
> > +  )
> > +endforeach
> > +
> > +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm']
> > +  gen = custom_target(
> > +    'gen-@0@'.format(x),
> > +    input : 'drm-memory.xml',
> > +    output : '@0@.xml'.format(x),
> > +    command : [prog_sed, '-e',
> > +               's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@',
> > +               '@INPUT@'],
> > +    capture : true,
> > +  )
> > +  custom_target(
> > +    '@0@.7'.format(x),
> > +    input : gen,
> > +    output : '@0@.7'.format(x, '7'),
> > +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'],
> > +    install : true,
> > +    install_dir : join_paths(get_option('datadir'), 'man', 'man7'),
> 
> ditto: mandir
> 
> > +    build_by_default : true,
> > +  )
> > +endforeach
> > diff --git a/meson.build b/meson.build
> > new file mode 100644
> > index 0000000..74ae222
> > --- /dev/null
> > +++ b/meson.build
> > @@ -0,0 +1,378 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +project(
> > +  'libdrm',
> > +  ['c'],
> > +  version : '2.4.89',
> > +  license : 'MIT',
> > +  default_options : ['buildtype=debugoptimized', 'c_std=gnu99'],
> 
> gnu99, are you sure?

libdrm makes extensive use of typeof(), which is a gnu extension. I don't think
it's ever been included in a iso C standard, has it?

> 
> also, we should specify the version of meson we support here:
> +  meson_version : '>= 0.42',
> 
> > +)
> > +
> > +pkg = import('pkgconfig')
> > +
> > +with_udev = get_option('udev')
> > +with_freedreno_kgsl = get_option('freedreno-kgls')
> > +with_install_tests = get_option('install_test_programs')
> > +with_cairo_tests = get_option('cairo_tests')
> > +with_valgrind = get_option('valgrind')
> > +
> > +config = configuration_data()
> > +
> > +# TODO: openbsd is guess, the others are correct
> > +if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system())
> 
> Let's make that *BSD until we know of a special case?
>   if host_machine.system().to_upper.endswith('BSD')

dragonflybsd has "dragonfly" as it's identifier, which doesn't end with bsd.
Also, I've tested this on all of the bsds except openbsd, so I know those work.

> 
> > +  dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4')
> > +else
> > +  dep_pthread_stubs = []
> > +endif
> > +dep_threads = dependency('threads')
> > +
> > +cc = meson.get_compiler('c')
> > +# Check for atomics
> > +if cc.compiles('''
> > +    int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
> > +    int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
> > +    ''',
> > +    name : 'Intel Atomics')
> > +  config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', true)
> 
> Will be unset in the other cases, instead of being set to 0
> 
> > +  with_atomics = true
> > +elif cc.has_header('atomic_ops.h')
> > +  config.set10('HAVE_LIB_ATOMIC_OPS', true)
> 
> Ditto.
> 
> Those can be easily fixed by setting them to false first, just before
> the if chain:
>   config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', false)
>   config.set10('HAVE_LIB_ATOMIC_OPS', false)
> 
> > +  with_atomics = true
> > +elif cc.has_function('atomic_cas_uint')
> > +  with_atomics = true
> > +else
> > +  with_atomics = false
> > +endif
> > +
> > +with_intel = false
> > +_intel = get_option('intel')
> > +if _intel != 'false'
> > +  if _intel == 'true' and not with_atomics
> > +    error('libdrm_intel requires atomics.')
> > +  endif
> > +  with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86')
> > +endif
> > +
> > +with_radoen = false
> 
> typo
> 
> > +_radeon = get_option('radeon')
> > +if _radeon != 'false'
> > +  if _radeon == 'true' and not with_atomics
> > +    error('libdrm_radeon requires atomics.')
> > +  endif
> > +  with_radeon = true
> > +endif
> > +
> > +with_amdgpu = false
> > +_amdgpu = get_option('amdgpu')
> > +if _amdgpu != 'false'
> > +  if _amdgpu == 'true' and not with_atomics
> > +    error('libdrm_amdgpu requires atomics.')
> > +  endif
> > +  with_amdgpu = true
> > +endif
> > +
> > +with_nouveau = false
> > +_nouveau = get_option('nouveau')
> > +if _nouveau != 'false'
> > +  if _nouveau == 'true' and not with_atomics
> > +    error('libdrm_nouveau requires atomics.')
> > +  endif
> > +  with_nouveau = true
> > +endif
> > +
> > +with_vmwgfx = false
> > +_vmwgfx = get_option('vmwgfx')
> > +if _vmwgfx != 'false'
> > +  with_vmwgfx = true
> > +endif
> > +
> > +with_omap = false
> > +_omap = get_option('omap')
> > +if _omap != 'false'
> > +  if _omap == 'true' and not with_atomics
> > +    error('libdrm_omap requires atomics.')
> > +  endif
> > +  with_omap = _omap == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_freedreno = false
> > +_freedreno = get_option('freedreno')
> > +if _freedreno != 'false'
> > +  if _freedreno == 'true' and not with_atomics
> > +    error('libdrm_freedreno requires atomics.')
> > +  endif
> > +  with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_tegra = false
> > +_tegra = get_option('tegra')
> > +if _tegra != 'false'
> > +  if _tegra == 'true' and not with_atomics
> > +    error('libdrm_tegra requires atomics.')
> > +  endif
> > +  with_tegra = _tegra == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_etnaviv = false
> > +_etnaviv = get_option('etnaviv')
> > +if _etnaviv != 'false'
> > +  if _etnaviv == 'true' and not with_atomics
> > +    error('libdrm_etnaviv requires atomics.')
> > +  endif
> > +  with_etnaviv = _etnaviv == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_exynos = false
> > +_exynos = get_option('exynos')
> > +if _exynos != 'false'
> > +  with_exynos = _exynos == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +with_vc4 = false
> > +_vc4 = get_option('vc4')
> > +if _vc4 != 'false'
> > +  with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
> > +endif
> > +
> > +# XXX: Aparently only freebsd and dragonfly bsd actually need this (and
> > +# gnu/kfreebsd), not openbsd and netbsd
> > +with_libkms = false
> > +_libkms = get_option('libkms')
> > +if _libkms != 'false'
> > +  with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system())
> > +endif
> > +
> > +if with_udev
> > +  dep_udev = dependency('udev')
> > +  config.set10('UDEV', true)
> > +else
> > +  dep_udev = []
> > +endif
> > +
> > +# Among others FreeBSD does not have a separate dl library.
> > +if not cc.has_function('dlsym')
> > +  dep_dl = cc.find_library('dl', required : with_nouveau)
> > +else
> > +  dep_dl = []
> > +endif
> > +# clock_gettime might require -rt, or it might not. find out
> > +if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>')
> > +  # XXX: untested
> > +  dep_rt = cc.find_library('rt')
> > +else
> > +  dep_rt = []
> > +endif
> > +dep_m = cc.find_library('m', required : false)
> > +if cc.has_header('sys/sysctl.h')
> > +  config.set10('HAVE_SYS_SYSCTL_H', true)
> > +endif
> > +if cc.has_header('sys/select.h')
> > +  config.set10('HAVE_SYS_SELECT_H', true)
> > +endif
> > +if cc.has_header_symbol('sys/sysmacros.h', 'major')
> > +  config.set10('MAJOR_IN_SYSMACROS', true)
> > +elif cc.has_header_symbol('sys/mkdev.h', 'major')
> > +  config.set10('MAJOR_IN_MKDEV', true)
> > +endif
> > +if cc.has_function('open_memstream')
> > +  config.set10('HAVE_OPEN_MEMSTREAM', true)
> > +endif
> > +
> > +warn_c_args = []
> > +foreach a : ['-Wall', '-Wextra', '-Wsign-compare', 
> > +             '-Werror-implicit-function-declaration', '-Wpointer-arith',
> > +             '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes',
> > +             '-Wmissing-declarations', '-Wnested-externs', '-Wpacked',
> > +             '-Wswitch-enum', '-Wmissing-format-attribute', 
> > +             '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', 
> > +             '-Wdeclaration-after-statement', '-Wold-style-definition']
> > +  if cc.has_argument(a)
> > +    warn_c_args += a
> > +  endif
> > +endforeach
> > +# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list
> > +# of options
> > +foreach a : ['unused-parameter', 'attributes', 'long-long', 
> > +             'missing-field-initializers']
> > +  if cc.has_argument('-W@0@'.format(a))
> > +    warn_c_args += '-Wno-@0@'.format(a)
> > +  endif
> > +endforeach
> > +
> > +
> > +dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel)
> > +dep_cunit = dependency('cunit', version : '>= 2.1', required : false)
> > +dep_cairo = dependency('cairo', required : with_cairo_tests == 'true')
> > +dep_valgrind = dependency('valgrind', required : with_valgrind == 'true')
> > +
> > +with_man_pages = get_option('man_pages')
> > +prog_xslt = find_program('xsltproc', required : with_man_pages == 'true')
> > +prog_sed = find_program('sed', required : with_man_pages == 'true')
> > +manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
> > +if prog_xslt.found()
> > +  if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0
> > +    if with_man_pages == 'true'
> > +      error('Manpage style sheet cannot be found')
> > +    endif
> > +    with_man_pages = 'false'
> > +  endif
> > +endif
> > +with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found()
> > +
> > +# Used for tets
> > +prog_bash = find_program('bash')
> > +
> > +if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''',
> > +               name : 'compiler supports __attribute__(("hidden"))')
> > +  config.set10('HAVE_VISIBILITY', true)
> > +endif
> > +
> > +foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'],
> > +             [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'],
> > +             [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'],
> > +             [with_tegra, 'TEGRA'], [with_vc4, 'VC4'],
> > +             [with_etnaviv, 'ETNAVIV'], [with_install_tests, 'INSTALL_TESTS']]
> 
> HAVE_INSTALL_TESTS is not used in C files, you can remove it from this list :)
> 
> > +  e = t[0]
> > +  if e
> 
> Why the temp var?
> 
> > +    config.set10('HAVE_@0@'.format(t[1]), true)
> 
> I'll add -Wundef when I have some time and go through those so we can have
>   config.set10('HAVE_@0@'.format(t[1]), t[0])
> 
> Then we can eventually switch to -Werror=undef :D
> 
> > +  endif
> > +endforeach
> > +if with_freedreno_kgsl
> > +  if not with_freedreno
> > +    error('cannot enable freedreno-kgsl without freedreno support')
> > +  endif
> > +  config.set10('HAVE_FREEDRENO_KGSL', true)
> > +endif
> 
> > +if with_amdgpu
> > +  config.set10('HAVE_AMDGPU', true)
> > +  if dep_cunit.found()
> > +    config.set10('HAVE_CUNIT', true)
> > +  endif
> > +endif
> 
> These two are actually unused, and should be removed from configure.ac :)
> 
> > +if dep_cairo.found()
> > +  config.set10('HAVE_CAIRO', true)
> > +endif
> > +if dep_valgrind.found()
> > +  config.set10('HAVE_VALGRIND', true)
> > +endif
> > +
> > +config.set10('_GNU_SOURCE', true)
> > +config_file = configure_file(
> > +  configuration : config,
> > +  output : 'config.h',
> > +)
> > +add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
> > +
> > +inc_root = include_directories('.')
> > +inc_drm = include_directories('include/drm')
> > +
> > +files_libdrm = files(
> > +     'xf86drm.c',
> > +     'xf86drmHash.c',
> > +     'xf86drmHash.h',
> > +     'xf86drmRandom.c',
> > +     'xf86drmRandom.h',
> > +     'xf86drmSL.c',
> > +     'xf86drmMode.c',
> > +     'xf86atomic.h',
> > +     'libdrm_macros.h',
> > +     'libdrm_lists.h',
> > +     'util_double_list.h',
> > +     'util_math.h',
> > +)
> > +
> > +libdrm = shared_library(
> > +  'drm',
> > +  [files_libdrm, config_file],
> > +  c_args : warn_c_args,
> > +  dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m],
> > +  include_directories : inc_drm,
> > +  version : '2.4.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm = declare_dependency(
> > +  link_with : libdrm,
> > +  include_directories : inc_drm,
> > +)
> > +
> > +install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h')
> > +install_headers(
> > +     'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h',
> > +     'include/drm/drm_sarea.h', 'include/drm/i915_drm.h',
> > +     'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
> > +     'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h',
> > +     'include/drm/r128_drm.h', 'include/drm/radeon_drm.h',
> > +     'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h',
> > +     'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
> > +     'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
> 
> Do we want to only install the headers for the libs that are enabled?
> (Not sure what autotools does)

This is copied exactly from autotools (which is why vmwgfx_drm.h is split. I
agree that this is less than ideal, and we should only install the headers if
we're building the associated libdrm_* library.

> 
> > +  subdir : 'libdrm',
> > +)
> > +if with_vmwgfx
> > +  install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm')
> > +endif
> > +
> > +pkg.generate(
> > +  name : 'libdrm',
> > +  libraries : libdrm,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  description : 'Userspace interface to kernel DRM services',
> > +)
> > + 
> > +if with_libkms
> > +  subdir('libkms')
> > +endif
> > +if with_intel
> > +  subdir('intel')
> > +endif
> > +if with_nouveau
> > +  subdir('nouveau')
> > +endif
> > +if with_radeon
> > +  subdir('radeon')
> > +endif
> > +if with_amdgpu
> > +  subdir('amdgpu')
> > +endif
> > +if with_omap
> > +  subdir('omap')
> > +endif
> > +if with_exynos
> > +  subdir('exynos')
> > +endif
> > +if with_freedreno
> > +  subdir('freedreno')
> > +endif
> > +if with_tegra
> > +  subdir('tegra')
> > +endif
> > +if with_vc4
> > +  subdir('vc4')
> > +endif
> > +if with_etnaviv
> > +  subdir('etnaviv')
> > +endif
> > +if with_man_pages
> > +  subdir('man')
> > +endif
> > +subdir('data')
> > +subdir('tests')
> > diff --git a/meson_options.txt b/meson_options.txt
> > new file mode 100644
> > index 0000000..7c2fa4f
> > --- /dev/null
> > +++ b/meson_options.txt
> > @@ -0,0 +1,38 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +option('libkms',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('intel',       type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('radeon',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('nouveau',     type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true', 'false', 'auto'])
> > +option('omap',        type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('exynos',      type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('freedreno',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('tegra',       type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('vc4',         type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('etnaviv',     type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
> > +option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('man_pages',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('valgrind',    type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
> > +option('freedreno-kgls',        type : 'boolean', value : false)
> > +option('install_test_programs', type : 'boolean', value : false)
> > +option('udev',                  type : 'boolean', value : false)
> 
> (as mentioned, descriptions would be good; copy/pasting the ones in
> configure.ac should be enough)
> 
> > diff --git a/nouveau/meson.build b/nouveau/meson.build
> > new file mode 100644
> > index 0000000..a50e4f7
> > --- /dev/null
> > +++ b/nouveau/meson.build
> > @@ -0,0 +1,65 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_nouveau = files(
> > +     'nouveau.c',
> > +     'pushbuf.c',
> > +     'bufctx.c',
> > +     'abi16.c',
> > +     'private.h',
> > +)
> > +
> > +libdrm_nouveau = shared_library(
> > +  'drm_nouveau',
> > +  [files_nouveau, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_threads,
> > +  version : '2.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_nouveau = declare_dependency(
> > +  link_with : [libdrm, libdrm_nouveau],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('nouveau.h', subdir : 'libdrm/nouveau')
> > +install_headers(
> > +  'nvif/class.h', 'nvif/cl0080.h', 'nvif/cl9097.h', 'nvif/if0002.h',
> > +  'nvif/if0003.h', 'nvif/ioctl.h', 'nvif/unpack.h',
> > +  subdir : 'libdrm/nouveau/nvif'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_nouveau',
> > +  libraries : libdrm_nouveau,
> > +  subdirs : ['.', 'nouveau'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to nouveau kernel DRM services',
> > +)
> > +
> > +test(
> > +  'nouveau-symbol-check',
> > +  prog_bash,
> > +  args : [files('nouveau-symbol-check'), libdrm_nouveau]
> > +)
> > diff --git a/omap/meson.build b/omap/meson.build
> > new file mode 100644
> > index 0000000..1881087
> > --- /dev/null
> > +++ b/omap/meson.build
> > @@ -0,0 +1,53 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_omap = shared_library(
> > +  'drm_omap',
> > +  [files('omap_drm.c'), config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  c_args : warn_c_args,
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_omap = declare_dependency(
> > +  link_with : [libdrm, libdrm_omap],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('omap_drmif.h', subdir : 'libdrm')
> > +install_headers('omap_drm.h', subdir : 'omap')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_omap',
> > +  libraries : libdrm_omap,
> > +  subdirs : ['.', 'libdrm', 'omap'],
> > +  version : '0.6',
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to omap kernel DRM services',
> > +)
> > +
> > +test(
> > +  'omap-symbol-check',
> > +  prog_bash,
> > +  args : [files('omap-symbol-check'), libdrm_omap]
> > +)
> > diff --git a/radeon/meson.build b/radeon/meson.build
> > new file mode 100644
> > index 0000000..f41c5c4
> > --- /dev/null
> > +++ b/radeon/meson.build
> > @@ -0,0 +1,65 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_radeon = files(
> > +     'radeon_bo_gem.c',
> > +     'radeon_cs_gem.c',
> > +     'radeon_cs_space.c',
> > +     'radeon_bo.c',
> > +     'radeon_cs.c',
> > +     'radeon_surface.c',
> > +)
> > +
> > +libdrm_radeon = shared_library(
> > +  'drm_radeon',
> > +  [files_radeon, config_file],
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  version : '1.0.1',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_radeon = declare_dependency(
> > +  link_with : [libdrm, libdrm_radeon],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers(
> > +     'radeon_bo.h', 'radeon_cs.h', 'radeon_surface.h', 'radeon_bo_gem.h',
> > +     'radeon_cs_gem.h', 'radeon_bo_int.h', 'radeon_cs_int.h', 'r600_pci_ids.h',
> > +  subdir : 'libdrm'
> > +)
> > +
> > +pkg.generate(
> > +  name : 'libdrm_radeon',
> > +  libraries : libdrm_radeon,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to kernel DRM services for radeon',
> > +)
> > +
> > +test(
> > +  'radeon-symbol-check',
> > +  prog_bash,
> > +  args : [files('radeon-symbol-check'), libdrm_radeon]
> > +)
> > diff --git a/tegra/meson.build b/tegra/meson.build
> > new file mode 100644
> > index 0000000..568531c
> > --- /dev/null
> > +++ b/tegra/meson.build
> > @@ -0,0 +1,52 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libdrm_tegra = shared_library(
> > +  'drm_tegra',
> > +  [files('private.h', 'tegra.c'), config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : [dep_pthread_stubs],
> > +  c_args : warn_c_args,
> > +  version : '0.0.0',
> > +  install : true,
> > +)
> > +
> > +ext_libdrm_tegra = declare_dependency(
> > +  link_with : [libdrm, libdrm_tegra],
> > +  include_directories : [inc_drm, include_directories('.')],
> > +)
> > +
> > +install_headers('tegra.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_tegra',
> > +  libraries : libdrm_tegra,
> > +  subdirs : ['.', 'libdrm'],
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to Tegra kernel DRM services',
> > +)
> > +
> > +test(
> > +  'tegra-symbol-check',
> > +  prog_bash,
> > +  args : [files('tegra-symbol-check'), libdrm_tegra]
> > +)
> > diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
> > new file mode 100644
> > index 0000000..5a07ce2
> > --- /dev/null
> > +++ b/tests/amdgpu/meson.build
> > @@ -0,0 +1,40 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +files_amdgpu_test = files(
> > +  'amdgpu_test.c',
> > +  'basic_tests.c',
> > +  'bo_tests.c',
> > +  'cs_tests.c',
> > +  'vce_tests.c',
> > +  'uvd_enc_tests.c',
> > +  'vcn_tests.c',
> > +  'deadlock_tests.c',
> > +  'vm_tests.c',
> > +)
> > +
> > +amdgpu_test = executable(
> > +  'amdgpu_test',
> > +  files_amdgpu_test,
> > +  dependencies : [dep_cunit, dep_threads],
> > +  include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')],
> 
> Not a fan of going back up the tree, but... meh

I'm just not a huge fan of polluting the namespace for an include that is used
once.

> 
> > +  link_with : [libdrm, libdrm_amdgpu],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build
> > new file mode 100644
> > index 0000000..32c5cee
> > --- /dev/null
> > +++ b/tests/etnaviv/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_etnaviv_tests = [inc_root, inc_drm, include_directories('../../etnaviv')]
> > +
> > +etnaviv_2d_test_files = files(
> > +  'cmdstream.xml.h',
> > +  'etnaviv_2d_test.c',
> > +  'state.xml.h',
> > +  'state_2d.xml.h',
> > +  'write_bmp.c',
> > +  'write_bmp.h',
> > +)
> > +
> > +etnaviv_2d_test = executable(
> > +  'etnaviv_2d_test',
> > +  etnaviv_2d_test_files,
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > +
> > +etnaviv_cmd_stream_test = executable(
> > +  'etnaviv_cmd_stream_test',
> > +  files('etnaviv_cmd_stream_test.c'),
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > +
> > +etnaviv_bo_cache_test = executable(
> > +  'etnaviv_bo_cache_test',
> > +  files('etnaviv_bo_cache_test.c'),
> > +  include_directories : inc_etnaviv_tests,
> > +  link_with : [libdrm, libdrm_etnaviv],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/exynos/meson.build b/tests/exynos/meson.build
> > new file mode 100644
> > index 0000000..940c3ce
> > --- /dev/null
> > +++ b/tests/exynos/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_exynos = include_directories('../../exynos')
> > +
> > +if with_libkms
> > +  exynos_fimg2d_test = executable(
> > +    'exynos_fimg2d_test',
> > +    files('exynos_fimg2d_test.c'),
> > +    c_args : warn_c_args,
> > +    include_directories : [inc_root, inc_drm, inc_exynos,
> > +                           include_directories('../../libkms')],
> > +    link_with : [libdrm, libkms, libdrm_exynos],
> > +    dependencies : dep_threads,
> > +    install : with_install_tests,
> > +  )
> > +endif
> > +
> > +exynos_fimg2d_perf = executable(
> > +  'exynos_fimg2d_perf',
> > +  files('exynos_fimg2d_perf.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm, inc_exynos],
> > +  link_with : [libdrm, libdrm_exynos],
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > +
> > +exynos_fimg2d_event = executable(
> > +  'exynos_fimg2d_event',
> > +  files('exynos_fimg2d_event.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_drm, inc_exynos],
> > +  link_with : [libdrm, libdrm_exynos],
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/kms/meson.build b/tests/kms/meson.build
> > new file mode 100644
> > index 0000000..e991913
> > --- /dev/null
> > +++ b/tests/kms/meson.build
> > @@ -0,0 +1,54 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +libkms_test_files = files(
> > +     'libkms-test.h',
> > +     'libkms-test-crtc.c',
> > +     'libkms-test-device.c',
> > +     'libkms-test-framebuffer.c',
> > +     'libkms-test-plane.c',
> > +     'libkms-test-screen.c',
> > +)
> > +
> > +libkms_test = static_library(
> > +  'kms-test',
> > +  libkms_test_files,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +kms_steal_crtc = executable(
> > +  'kms-steal-crtc',
> > +  files('kms-steal-crtc.c'),
> > +  dependencies : dep_cairo,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libkms_test, libutil],
> > +  install : with_install_tests,
> > +)
> > +
> > +kms_universal_planes = executable(
> > +  'kms-universal-lanes',
> > +  files('kms-universal-planes.c'),
> > +  dependencies : dep_cairo,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libkms_test],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/kmstest/meson.build b/tests/kmstest/meson.build
> > new file mode 100644
> > index 0000000..f713f26
> > --- /dev/null
> > +++ b/tests/kmstest/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +kmstest = executable(
> > +  'kmstest',
> > +  files('main.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, include_directories('../../libkms'), inc_drm],
> > +  link_with : [libutil, libkms, libdrm],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/meson.build b/tests/meson.build
> > new file mode 100644
> > index 0000000..960ff7b
> > --- /dev/null
> > +++ b/tests/meson.build
> > @@ -0,0 +1,85 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +inc_tests = include_directories('.')
> > +
> > +subdir('util')
> > +subdir('kms')
> > +subdir('modeprint')
> > +subdir('proptest')
> > +subdir('vbltest')
> > +if with_libkms
> > +  subdir('kmstest')
> > +endif
> > +if with_radeon
> > +  subdir('radeon')
> > +endif
> > +if with_amdgpu and dep_cunit.found()
> 
> I feel like the dep_cunit.found() condition belongs inside
> tests/amdgpu/meson.build, around the relevant test.

I guess. There's only one test in amdgpu anyway, but I'll change it.

> 
> > +  subdir('amdgpu')
> > +endif
> > +if with_exynos
> > +  subdir('exynos')
> > +endif
> > +if with_tegra
> > +  subdir('tegra')
> > +endif
> > +if with_etnaviv
> > +  subdir('etnaviv')
> > +endif
> > +if with_nouveau
> > +  subdir('nouveau')
> > +endif
> > +
> > +drmsl = executable(
> > +  'drmsl',
> > +  files('drmsl.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +hash = executable(
> > +  'hash',
> > +  files('hash.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +random = executable(
> > +  'random',
> > +  files('random.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +drmdevice = executable(
> > +  'drmdevice',
> > +  files('drmdevice.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test('random', random, timeout : 240)
> > +test('hash', hash)
> > +test('drmsl', drmsl)
> > +test('drmdevice', drmdevice)
> > diff --git a/tests/modeprint/meson.build b/tests/modeprint/meson.build
> > new file mode 100644
> > index 0000000..5f0eb24
> > --- /dev/null
> > +++ b/tests/modeprint/meson.build
> > @@ -0,0 +1,29 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +modeprint = executable(
> > +  'modeprint',
> > +  files('modeprint.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_threads,
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/nouveau/meson.build b/tests/nouveau/meson.build
> > new file mode 100644
> > index 0000000..f5d73c1
> > --- /dev/null
> > +++ b/tests/nouveau/meson.build
> > @@ -0,0 +1,30 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +threaded = executable(
> > +  'threaded',
> > +  files('threaded.c'),
> > +  dependencies : [dep_dl, dep_threads],
> > +  include_directories : [inc_root, inc_drm, include_directories('../../nouveau')],
> > +  link_with : [libdrm, libdrm_nouveau],
> > +  c_args : warn_c_args,
> > +)
> > +
> > +test('threaded', threaded)
> > diff --git a/tests/proptest/meson.build b/tests/proptest/meson.build
> > new file mode 100644
> > index 0000000..dcd724f
> > --- /dev/null
> > +++ b/tests/proptest/meson.build
> > @@ -0,0 +1,30 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +proptest_files = files('proptest.c')
> > +
> > +proptest = executable(
> > +  'proptest',
> > +  files('proptest.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libdrm, libutil],
> > +  install : with_install_tests,
> > +)
> > diff --git a/tests/radeon/meson.build b/tests/radeon/meson.build
> > new file mode 100644
> > index 0000000..54db231
> > --- /dev/null
> > +++ b/tests/radeon/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +radeon_ttm = executable(
> > +  'radeon_ttm',
> > +  files('rbo.c', 'rbo.h', 'radeon_ttm.c'),
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  c_args : warn_c_args,
> > +)
> > diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build
> > new file mode 100644
> > index 0000000..9c74ac4
> > --- /dev/null
> > +++ b/tests/tegra/meson.build
> > @@ -0,0 +1,27 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +openclose = executable(
> > +  'openclose',
> > +  files('openclose.c'),
> > +  include_directories : [inc_root, inc_drm, include_directories('../../tegra')],
> > +  c_args : warn_c_args,
> > +  link_with : [libdrm, libdrm_tegra],
> > +)
> > diff --git a/tests/util/meson.build b/tests/util/meson.build
> > new file mode 100644
> > index 0000000..a0e1d3c
> > --- /dev/null
> > +++ b/tests/util/meson.build
> > @@ -0,0 +1,37 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +util_files = files(
> > +  'common.h',
> > +  'format.c',
> > +  'format.h',
> > +  'kms.c',
> > +  'kms.h',
> > +  'pattern.c',
> > +  'pattern.h',
> > +)
> > +
> > +libutil = static_library(
> > +  'util',
> > +  [util_files, config_file],
> > +  include_directories : [inc_root, inc_drm],
> > +  link_with : libdrm,
> > +  dependencies : dep_cairo
> > +)
> > diff --git a/tests/vbltest/meson.build b/tests/vbltest/meson.build
> > new file mode 100644
> > index 0000000..4fb1ad3
> > --- /dev/null
> > +++ b/tests/vbltest/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +vbltest = executable(
> > +  'vbltest',
> > +  files('vbltest.c'),
> > +  c_args : warn_c_args,
> > +  include_directories : [inc_root, inc_tests, inc_drm],
> > +  link_with : [libdrm, libutil],
> > +  install : with_install_tests,
> > +)
> > diff --git a/vc4/meson.build b/vc4/meson.build
> > new file mode 100644
> > index 0000000..0136987
> > --- /dev/null
> > +++ b/vc4/meson.build
> > @@ -0,0 +1,28 @@
> > +# Copyright © 2017 Intel Corporation
> > +
> > +# Permission is hereby granted, free of charge, to any person obtaining a copy
> > +# of this software and associated documentation files (the "Software"), to deal
> > +# in the Software without restriction, including without limitation the rights
> > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > +# copies of the Software, and to permit persons to whom the Software is
> > +# furnished to do so, subject to the following conditions:
> > +
> > +# The above copyright notice and this permission notice shall be included in
> > +# all copies or substantial portions of the Software.
> > +
> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > +# SOFTWARE.
> > +
> > +install_headers('vc4_packet.h', 'vc4_qpu_defines.h', subdir : 'libdrm')
> > +
> > +pkg.generate(
> > +  name : 'libdrm_vc4',
> > +  version : meson.project_version(),
> > +  requires_private : 'libdrm',
> > +  description : 'Userspace interface to vc4 kernel DRM services',
> > +)
> > -- 
> > git-series 0.9.1
> 
> I think everything else looks good; thanks for the effort!
diff mbox

Patch

diff --git a/.editorconfig b/.editorconfig
index 893b7be..bbad3e6 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -17,3 +17,7 @@  indent_style = tab
 [*.m4]
 indent_style = space
 indent_size = 2
+
+[meson.build,meson_options.txt]
+indent_style = space
+indent_size = 2
diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig
index 2528d67..0c758d6 100644
--- a/amdgpu/.editorconfig
+++ b/amdgpu/.editorconfig
@@ -7,3 +7,8 @@  indent_style = tab
 indent_size = 8
 tab_width = 8
 insert_final_newline = true
+
+[meson.build]
+indent_style = space
+indent_size = 2
+insert_final_newline = false
diff --git a/amdgpu/meson.build b/amdgpu/meson.build
new file mode 100644
index 0000000..13bf88b
--- /dev/null
+++ b/amdgpu/meson.build
@@ -0,0 +1,70 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_amdgpu = files(
+  'amdgpu_asic_id.c',
+  'amdgpu_bo.c',
+  'amdgpu_cs.c',
+  'amdgpu_device.c',
+  'amdgpu_gpu_info.c',
+  'amdgpu_internal.h',
+  'amdgpu_vamgr.c',
+  'amdgpu_vm.c',
+  'util_hash.c',
+  'util_hash.h',
+  'util_hash_table.c',
+  'util_hash_table.h',
+)
+
+libdrm_amdgpu = shared_library(
+  'drm_amdgpu',
+  [files_amdgpu, config_file],
+  c_args : [
+    warn_c_args,
+    '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(join_paths(get_option('datadir'), 'amdgpu.ids')),
+  ],
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : [dep_pthread_stubs],
+  version : '1.0.0',
+  install : true,
+)
+
+install_headers('amdgpu.h', subdir : 'libdrm')
+
+pkg.generate(
+  name : 'libdrm_amdgpu',
+  libraries : libdrm_amdgpu,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to kernel DRM services for amdgpu',
+)
+
+ext_libdrm_amdgpu = declare_dependency(
+  link_with : [libdrm, libdrm_amdgpu],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+test(
+  'amdgpu-symbol-check',
+  prog_bash,
+  args : [files('amdgpu-symbol-check'), libdrm_amdgpu]
+)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..4990ca5
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,27 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+if with_amdgpu
+  install_data(
+    'amdgpu.ids',
+    install_mode : 'r--r--r--',
+    install_dir : join_paths(get_option('datadir'), 'libdrm'),
+  )
+endif
diff --git a/etnaviv/meson.build b/etnaviv/meson.build
new file mode 100644
index 0000000..8f39775
--- /dev/null
+++ b/etnaviv/meson.build
@@ -0,0 +1,64 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_etnaviv = files(
+  'etnaviv_device.c',
+  'etnaviv_gpu.c',
+  'etnaviv_bo.c',
+  'etnaviv_bo_cache.c',
+  'etnaviv_perfmon.c',
+  'etnaviv_pipe.c',
+  'etnaviv_cmd_stream.c',
+  'etnaviv_drm.h',
+  'etnaviv_priv.h',
+)
+
+libdrm_etnaviv = shared_library(
+  'drm_etnaviv',
+  [files_etnaviv, config_file],
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+  dependencies : [dep_pthread_stubs, dep_rt],
+  version : '1.0.0',
+  install : true,
+)
+
+install_headers('etnaviv_drmif.h', subdir : 'libdrm')
+
+pkg.generate(
+  name : 'libdrm_etnaviv',
+  libraries : libdrm_etnaviv,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to Tegra kernel DRM services',
+)
+
+ext_libdrm_etnaviv = declare_dependency(
+  link_with : [libdrm, libdrm_etnaviv],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+test(
+  'etnaviv-symbol-check',
+  prog_bash,
+  args : [files('etnaviv-symbol-check'), libdrm_etnaviv]
+)
diff --git a/exynos/meson.build b/exynos/meson.build
new file mode 100644
index 0000000..7da74aa
--- /dev/null
+++ b/exynos/meson.build
@@ -0,0 +1,53 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+libdrm_exynos = shared_library(
+  'drm_exynos',
+  [files('exynos_drm.c', 'exynos_fimg2d.c', 'fimg2d_reg.h'), config_file],
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : [dep_pthread_stubs],
+  version : '1.0.0',
+  install : true,
+)
+
+install_headers('exynos_drmif.h', subdir : 'libdrm')
+install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos')
+
+ext_libdrm_exynos = declare_dependency(
+  link_with : [libdrm, libdrm_exynos],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+pkg.generate(
+  name : 'libdrm_exynos',
+  libraries : libdrm_exynos,
+  subdirs : ['.', 'libdrm', 'exynos'],
+  version : '0.7',
+  requires_private : 'libdrm',
+  description : 'Userspace interface to exynos kernel DRM services',
+)
+
+test(
+  'exynos-symbol-check',
+  prog_bash,
+  args : [files('exynos-symbol-check'), libdrm_exynos]
+)
diff --git a/freedreno/meson.build b/freedreno/meson.build
new file mode 100644
index 0000000..47d6e44
--- /dev/null
+++ b/freedreno/meson.build
@@ -0,0 +1,82 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_freedreno = files(
+  'freedreno_device.c',
+  'freedreno_pipe.c',
+  'freedreno_priv.h',
+  'freedreno_ringbuffer.c',
+  'freedreno_bo.c',
+  'freedreno_bo_cache.c',
+  'msm/msm_bo.c',
+  'msm/msm_device.c',
+  'msm/msm_drm.h',
+  'msm/msm_pipe.c',
+  'msm/msm_priv.h',
+  'msm/msm_ringbuffer.c',
+)
+
+if with_freedreno_kgsl != 'false'
+  files_freedreno += files(
+    'kgsl/kgsl_bo.c',
+    'kgsl/kgsl_device.c',
+    'kgsl/kgsl_drm.h',
+    'kgsl/kgsl_pipe.c',
+    'kgsl/kgsl_priv.h',
+    'kgsl/kgsl_ringbuffer.c',
+    'kgsl/msm_kgsl.h',
+  )
+endif
+
+libdrm_freedreno = shared_library(
+  'drm_freedreno',
+  [files_freedreno, config_file],
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm],
+  dependencies : [dep_valgrind, dep_pthread_stubs, dep_rt],
+  link_with : libdrm,
+  version : '1.0.0',
+  install : true,
+)
+
+ext_libdrm_freedreno = declare_dependency(
+  link_with : [libdrm, libdrm_freedreno],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers(
+  'freedreno_drmif.h', 'freedreno_ringbuffer.h',
+  subdir : 'freedreno'
+)
+
+pkg.generate(
+  name : 'libdrm_freedreno',
+  libraries : libdrm_freedreno,
+  subdirs : ['.', 'libdrm', 'freedreno'],
+  version : '0.7',
+  requires_private : 'libdrm',
+  description : 'Userspace interface to freedreno kernel DRM services',
+)
+
+test(
+  'freedreno-symbol-check',
+  prog_bash,
+  args : [files('freedreno-symbol-check'), libdrm_freedreno]
+)
diff --git a/intel/meson.build b/intel/meson.build
new file mode 100644
index 0000000..18f35c0
--- /dev/null
+++ b/intel/meson.build
@@ -0,0 +1,111 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_intel = files(
+  'intel_bufmgr.c',
+  'intel_bufmgr_priv.h',
+  'intel_bufmgr_fake.c',
+  'intel_bufmgr_gem.c',
+  'intel_decode.c',
+  'intel_chipset.h',
+  'mm.c',
+  'mm.h',
+  'uthash.h',
+)
+
+libdrm_intel = shared_library(
+  'drm_intel',
+  [files_intel, config_file],
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : [dep_pciaccess, dep_pthread_stubs, dep_rt, dep_valgrind],
+  c_args : warn_c_args,
+  version : '1.0.0',
+  install : true,
+)
+
+ext_libdrm_intel = declare_dependency(
+  link_with : [libdrm, libdrm_intel],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers(
+  'intel_bufmgr.h', 'intel_aub.h', 'intel_debug.h',
+  subdir : 'libdrm',
+)
+
+pkg.generate(
+  name : 'libdrm_intel',
+  libraries : libdrm_intel,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  requires : 'libdrm',
+  description : 'Userspace interface to intel kernel DRM services',
+)
+
+test_decode = executable(
+  'test_decode',
+  files('test_decode.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : [libdrm, libdrm_intel],
+  c_args : warn_c_args,
+)
+
+test(
+  'gen4-3d.batch',
+  prog_bash,
+  args : files('tests/gen4-3d.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'gen45-3d.batch',
+  prog_bash,
+  args : files('tests/gm45-3d.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'gen5-3d.batch',
+  prog_bash,
+  args : files('tests/gen5-3d.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'gen6-3d.batch',
+  prog_bash,
+  args : files('tests/gen6-3d.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'gen7-3d.batch',
+  prog_bash,
+  args : files('tests/gen7-3d.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'gen7-2d-copy.batch',
+  prog_bash,
+  args : files('tests/gen7-2d-copy.batch.sh'),
+  workdir : meson.current_build_dir(),
+)
+test(
+  'intel-symbol-check',
+  prog_bash,
+  args : [files('intel-symbol-check'), libdrm_intel]
+)
diff --git a/libkms/meson.build b/libkms/meson.build
new file mode 100644
index 0000000..80afc89
--- /dev/null
+++ b/libkms/meson.build
@@ -0,0 +1,75 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+libkms_include = [inc_root, inc_drm]
+files_libkms = files(
+  'internal.h',
+  'linux.c',
+  'dumb.c',
+  'api.c',
+)
+if with_vmwgfx
+  files_libkms += files('vmwgfx.c')
+endif
+if with_intel
+  files_libkms += files('intel.c')
+endif
+if with_nouveau
+  files_libkms += files('nouveau.c')
+endif
+if with_radeon
+  files_libkms += files('radeon.c')
+endif
+if with_exynos
+  files_libkms += files('exynos.c')
+  libkms_include += include_directories('../exynos')
+endif
+
+libkms = shared_library(
+  'kms',
+  [files_libkms, config_file],
+  c_args : warn_c_args,
+  include_directories : libkms_include,
+  link_with : libdrm,
+  version : '1.0.0',
+  install : true,
+)
+
+ext_libkms = declare_dependency(
+  link_with : [libdrm, libkms],
+  include_directories : [libkms_include],
+)
+
+install_headers('libkms.h', subdir : 'libkms')
+
+pkg.generate(
+  name : 'libkms',
+  libraries : libkms,
+  subdirs : ['libkms'],
+  version : '1.0.0',
+  requires_private : 'libdrm',
+  description : 'Library that abstracts away the different mm interfaces for kernel drivers',
+)
+
+test(
+  'kms-symbol-check',
+  prog_bash,
+  args : [files('kms-symbol-check'), libkms]
+)
diff --git a/man/meson.build b/man/meson.build
new file mode 100644
index 0000000..0b2efe5
--- /dev/null
+++ b/man/meson.build
@@ -0,0 +1,66 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+xsltproc_args = [
+  '--stringparam', 'man.authors.section.enabled', '0',
+  '--stringparam', 'man.copyright.section.enabled', '0',
+  '--stringparam', 'funcsynopsis.style', 'ansi',
+  '--stringparam', 'man.output.quietly', '1',
+  '--nonet', manpage_style,
+]
+
+xmls = [
+  ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'],
+  ['drmHandleEvent', '3'], ['drmModeGetResources', '3']
+]
+foreach x : xmls
+  m = x[0]
+  s = x[1]
+  custom_target(
+    m,
+    input : files('@0@.xml'.format(m)),
+    output : '@0@.@1@'.format(m, s),
+    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'],
+    install : true,
+    install_dir : join_paths(get_option('datadir'), 'man', 'man@0@'.format(s)),
+    build_by_default : true,
+  )
+endforeach
+
+foreach x : ['drm-mm', 'drm-gem', 'drm-ttm']
+  gen = custom_target(
+    'gen-@0@'.format(x),
+    input : 'drm-memory.xml',
+    output : '@0@.xml'.format(x),
+    command : [prog_sed, '-e',
+               's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@',
+               '@INPUT@'],
+    capture : true,
+  )
+  custom_target(
+    '@0@.7'.format(x),
+    input : gen,
+    output : '@0@.7'.format(x, '7'),
+    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'],
+    install : true,
+    install_dir : join_paths(get_option('datadir'), 'man', 'man7'),
+    build_by_default : true,
+  )
+endforeach
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..74ae222
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,378 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+project(
+  'libdrm',
+  ['c'],
+  version : '2.4.89',
+  license : 'MIT',
+  default_options : ['buildtype=debugoptimized', 'c_std=gnu99'],
+)
+
+pkg = import('pkgconfig')
+
+with_udev = get_option('udev')
+with_freedreno_kgsl = get_option('freedreno-kgls')
+with_install_tests = get_option('install_test_programs')
+with_cairo_tests = get_option('cairo_tests')
+with_valgrind = get_option('valgrind')
+
+config = configuration_data()
+
+# TODO: openbsd is guess, the others are correct
+if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system())
+  dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4')
+else
+  dep_pthread_stubs = []
+endif
+dep_threads = dependency('threads')
+
+cc = meson.get_compiler('c')
+# Check for atomics
+if cc.compiles('''
+    int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
+    int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
+    ''',
+    name : 'Intel Atomics')
+  config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', true)
+  with_atomics = true
+elif cc.has_header('atomic_ops.h')
+  config.set10('HAVE_LIB_ATOMIC_OPS', true)
+  with_atomics = true
+elif cc.has_function('atomic_cas_uint')
+  with_atomics = true
+else
+  with_atomics = false
+endif
+
+with_intel = false
+_intel = get_option('intel')
+if _intel != 'false'
+  if _intel == 'true' and not with_atomics
+    error('libdrm_intel requires atomics.')
+  endif
+  with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86')
+endif
+
+with_radoen = false
+_radeon = get_option('radeon')
+if _radeon != 'false'
+  if _radeon == 'true' and not with_atomics
+    error('libdrm_radeon requires atomics.')
+  endif
+  with_radeon = true
+endif
+
+with_amdgpu = false
+_amdgpu = get_option('amdgpu')
+if _amdgpu != 'false'
+  if _amdgpu == 'true' and not with_atomics
+    error('libdrm_amdgpu requires atomics.')
+  endif
+  with_amdgpu = true
+endif
+
+with_nouveau = false
+_nouveau = get_option('nouveau')
+if _nouveau != 'false'
+  if _nouveau == 'true' and not with_atomics
+    error('libdrm_nouveau requires atomics.')
+  endif
+  with_nouveau = true
+endif
+
+with_vmwgfx = false
+_vmwgfx = get_option('vmwgfx')
+if _vmwgfx != 'false'
+  with_vmwgfx = true
+endif
+
+with_omap = false
+_omap = get_option('omap')
+if _omap != 'false'
+  if _omap == 'true' and not with_atomics
+    error('libdrm_omap requires atomics.')
+  endif
+  with_omap = _omap == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+with_freedreno = false
+_freedreno = get_option('freedreno')
+if _freedreno != 'false'
+  if _freedreno == 'true' and not with_atomics
+    error('libdrm_freedreno requires atomics.')
+  endif
+  with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+with_tegra = false
+_tegra = get_option('tegra')
+if _tegra != 'false'
+  if _tegra == 'true' and not with_atomics
+    error('libdrm_tegra requires atomics.')
+  endif
+  with_tegra = _tegra == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+with_etnaviv = false
+_etnaviv = get_option('etnaviv')
+if _etnaviv != 'false'
+  if _etnaviv == 'true' and not with_atomics
+    error('libdrm_etnaviv requires atomics.')
+  endif
+  with_etnaviv = _etnaviv == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+with_exynos = false
+_exynos = get_option('exynos')
+if _exynos != 'false'
+  with_exynos = _exynos == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+with_vc4 = false
+_vc4 = get_option('vc4')
+if _vc4 != 'false'
+  with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family())
+endif
+
+# XXX: Aparently only freebsd and dragonfly bsd actually need this (and
+# gnu/kfreebsd), not openbsd and netbsd
+with_libkms = false
+_libkms = get_option('libkms')
+if _libkms != 'false'
+  with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system())
+endif
+
+if with_udev
+  dep_udev = dependency('udev')
+  config.set10('UDEV', true)
+else
+  dep_udev = []
+endif
+
+# Among others FreeBSD does not have a separate dl library.
+if not cc.has_function('dlsym')
+  dep_dl = cc.find_library('dl', required : with_nouveau)
+else
+  dep_dl = []
+endif
+# clock_gettime might require -rt, or it might not. find out
+if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>')
+  # XXX: untested
+  dep_rt = cc.find_library('rt')
+else
+  dep_rt = []
+endif
+dep_m = cc.find_library('m', required : false)
+if cc.has_header('sys/sysctl.h')
+  config.set10('HAVE_SYS_SYSCTL_H', true)
+endif
+if cc.has_header('sys/select.h')
+  config.set10('HAVE_SYS_SELECT_H', true)
+endif
+if cc.has_header_symbol('sys/sysmacros.h', 'major')
+  config.set10('MAJOR_IN_SYSMACROS', true)
+elif cc.has_header_symbol('sys/mkdev.h', 'major')
+  config.set10('MAJOR_IN_MKDEV', true)
+endif
+if cc.has_function('open_memstream')
+  config.set10('HAVE_OPEN_MEMSTREAM', true)
+endif
+
+warn_c_args = []
+foreach a : ['-Wall', '-Wextra', '-Wsign-compare', 
+             '-Werror-implicit-function-declaration', '-Wpointer-arith',
+             '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes',
+             '-Wmissing-declarations', '-Wnested-externs', '-Wpacked',
+             '-Wswitch-enum', '-Wmissing-format-attribute', 
+             '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', 
+             '-Wdeclaration-after-statement', '-Wold-style-definition']
+  if cc.has_argument(a)
+    warn_c_args += a
+  endif
+endforeach
+# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list
+# of options
+foreach a : ['unused-parameter', 'attributes', 'long-long', 
+             'missing-field-initializers']
+  if cc.has_argument('-W@0@'.format(a))
+    warn_c_args += '-Wno-@0@'.format(a)
+  endif
+endforeach
+
+
+dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel)
+dep_cunit = dependency('cunit', version : '>= 2.1', required : false)
+dep_cairo = dependency('cairo', required : with_cairo_tests == 'true')
+dep_valgrind = dependency('valgrind', required : with_valgrind == 'true')
+
+with_man_pages = get_option('man_pages')
+prog_xslt = find_program('xsltproc', required : with_man_pages == 'true')
+prog_sed = find_program('sed', required : with_man_pages == 'true')
+manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
+if prog_xslt.found()
+  if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0
+    if with_man_pages == 'true'
+      error('Manpage style sheet cannot be found')
+    endif
+    with_man_pages = 'false'
+  endif
+endif
+with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found()
+
+# Used for tets
+prog_bash = find_program('bash')
+
+if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''',
+               name : 'compiler supports __attribute__(("hidden"))')
+  config.set10('HAVE_VISIBILITY', true)
+endif
+
+foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'],
+             [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'],
+             [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'],
+             [with_tegra, 'TEGRA'], [with_vc4, 'VC4'],
+             [with_etnaviv, 'ETNAVIV'], [with_install_tests, 'INSTALL_TESTS']]
+  e = t[0]
+  if e
+    config.set10('HAVE_@0@'.format(t[1]), true)
+  endif
+endforeach
+if with_freedreno_kgsl
+  if not with_freedreno
+    error('cannot enable freedreno-kgsl without freedreno support')
+  endif
+  config.set10('HAVE_FREEDRENO_KGSL', true)
+endif
+if with_amdgpu
+  config.set10('HAVE_AMDGPU', true)
+  if dep_cunit.found()
+    config.set10('HAVE_CUNIT', true)
+  endif
+endif
+if dep_cairo.found()
+  config.set10('HAVE_CAIRO', true)
+endif
+if dep_valgrind.found()
+  config.set10('HAVE_VALGRIND', true)
+endif
+
+config.set10('_GNU_SOURCE', true)
+config_file = configure_file(
+  configuration : config,
+  output : 'config.h',
+)
+add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
+
+inc_root = include_directories('.')
+inc_drm = include_directories('include/drm')
+
+files_libdrm = files(
+	'xf86drm.c',
+	'xf86drmHash.c',
+	'xf86drmHash.h',
+	'xf86drmRandom.c',
+	'xf86drmRandom.h',
+	'xf86drmSL.c',
+	'xf86drmMode.c',
+	'xf86atomic.h',
+	'libdrm_macros.h',
+	'libdrm_lists.h',
+	'util_double_list.h',
+	'util_math.h',
+)
+
+libdrm = shared_library(
+  'drm',
+  [files_libdrm, config_file],
+  c_args : warn_c_args,
+  dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m],
+  include_directories : inc_drm,
+  version : '2.4.0',
+  install : true,
+)
+
+ext_libdrm = declare_dependency(
+  link_with : libdrm,
+  include_directories : inc_drm,
+)
+
+install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h')
+install_headers(
+	'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h',
+	'include/drm/drm_sarea.h', 'include/drm/i915_drm.h',
+	'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
+	'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h',
+	'include/drm/r128_drm.h', 'include/drm/radeon_drm.h',
+	'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h',
+	'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
+	'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
+  subdir : 'libdrm',
+)
+if with_vmwgfx
+  install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm')
+endif
+
+pkg.generate(
+  name : 'libdrm',
+  libraries : libdrm,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  description : 'Userspace interface to kernel DRM services',
+)
+ 
+if with_libkms
+  subdir('libkms')
+endif
+if with_intel
+  subdir('intel')
+endif
+if with_nouveau
+  subdir('nouveau')
+endif
+if with_radeon
+  subdir('radeon')
+endif
+if with_amdgpu
+  subdir('amdgpu')
+endif
+if with_omap
+  subdir('omap')
+endif
+if with_exynos
+  subdir('exynos')
+endif
+if with_freedreno
+  subdir('freedreno')
+endif
+if with_tegra
+  subdir('tegra')
+endif
+if with_vc4
+  subdir('vc4')
+endif
+if with_etnaviv
+  subdir('etnaviv')
+endif
+if with_man_pages
+  subdir('man')
+endif
+subdir('data')
+subdir('tests')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..7c2fa4f
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,38 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+option('libkms',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('intel',       type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('radeon',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('amdgpu',      type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('nouveau',     type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('vmwgfx',      type : 'combo', value : 'true',  choices : ['true', 'false', 'auto'])
+option('omap',        type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
+option('exynos',      type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
+option('freedreno',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('tegra',       type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
+option('vc4',         type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('etnaviv',     type : 'combo', value : 'false', choices : ['true', 'false', 'auto'])
+option('cairo_tests', type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('man_pages',   type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('valgrind',    type : 'combo', value : 'auto',  choices : ['true', 'false', 'auto'])
+option('freedreno-kgls',        type : 'boolean', value : false)
+option('install_test_programs', type : 'boolean', value : false)
+option('udev',                  type : 'boolean', value : false)
diff --git a/nouveau/meson.build b/nouveau/meson.build
new file mode 100644
index 0000000..a50e4f7
--- /dev/null
+++ b/nouveau/meson.build
@@ -0,0 +1,65 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_nouveau = files(
+	'nouveau.c',
+	'pushbuf.c',
+	'bufctx.c',
+	'abi16.c',
+	'private.h',
+)
+
+libdrm_nouveau = shared_library(
+  'drm_nouveau',
+  [files_nouveau, config_file],
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : dep_threads,
+  version : '2.0.0',
+  install : true,
+)
+
+ext_libdrm_nouveau = declare_dependency(
+  link_with : [libdrm, libdrm_nouveau],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers('nouveau.h', subdir : 'libdrm/nouveau')
+install_headers(
+  'nvif/class.h', 'nvif/cl0080.h', 'nvif/cl9097.h', 'nvif/if0002.h',
+  'nvif/if0003.h', 'nvif/ioctl.h', 'nvif/unpack.h',
+  subdir : 'libdrm/nouveau/nvif'
+)
+
+pkg.generate(
+  name : 'libdrm_nouveau',
+  libraries : libdrm_nouveau,
+  subdirs : ['.', 'nouveau'],
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to nouveau kernel DRM services',
+)
+
+test(
+  'nouveau-symbol-check',
+  prog_bash,
+  args : [files('nouveau-symbol-check'), libdrm_nouveau]
+)
diff --git a/omap/meson.build b/omap/meson.build
new file mode 100644
index 0000000..1881087
--- /dev/null
+++ b/omap/meson.build
@@ -0,0 +1,53 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+libdrm_omap = shared_library(
+  'drm_omap',
+  [files('omap_drm.c'), config_file],
+  include_directories : [inc_root, inc_drm],
+  c_args : warn_c_args,
+  link_with : libdrm,
+  dependencies : [dep_pthread_stubs],
+  version : '1.0.0',
+  install : true,
+)
+
+ext_libdrm_omap = declare_dependency(
+  link_with : [libdrm, libdrm_omap],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers('omap_drmif.h', subdir : 'libdrm')
+install_headers('omap_drm.h', subdir : 'omap')
+
+pkg.generate(
+  name : 'libdrm_omap',
+  libraries : libdrm_omap,
+  subdirs : ['.', 'libdrm', 'omap'],
+  version : '0.6',
+  requires_private : 'libdrm',
+  description : 'Userspace interface to omap kernel DRM services',
+)
+
+test(
+  'omap-symbol-check',
+  prog_bash,
+  args : [files('omap-symbol-check'), libdrm_omap]
+)
diff --git a/radeon/meson.build b/radeon/meson.build
new file mode 100644
index 0000000..f41c5c4
--- /dev/null
+++ b/radeon/meson.build
@@ -0,0 +1,65 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_radeon = files(
+	'radeon_bo_gem.c',
+	'radeon_cs_gem.c',
+	'radeon_cs_space.c',
+	'radeon_bo.c',
+	'radeon_cs.c',
+	'radeon_surface.c',
+)
+
+libdrm_radeon = shared_library(
+  'drm_radeon',
+  [files_radeon, config_file],
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : [dep_pthread_stubs],
+  version : '1.0.1',
+  install : true,
+)
+
+ext_libdrm_radeon = declare_dependency(
+  link_with : [libdrm, libdrm_radeon],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers(
+	'radeon_bo.h', 'radeon_cs.h', 'radeon_surface.h', 'radeon_bo_gem.h',
+	'radeon_cs_gem.h', 'radeon_bo_int.h', 'radeon_cs_int.h', 'r600_pci_ids.h',
+  subdir : 'libdrm'
+)
+
+pkg.generate(
+  name : 'libdrm_radeon',
+  libraries : libdrm_radeon,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to kernel DRM services for radeon',
+)
+
+test(
+  'radeon-symbol-check',
+  prog_bash,
+  args : [files('radeon-symbol-check'), libdrm_radeon]
+)
diff --git a/tegra/meson.build b/tegra/meson.build
new file mode 100644
index 0000000..568531c
--- /dev/null
+++ b/tegra/meson.build
@@ -0,0 +1,52 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+libdrm_tegra = shared_library(
+  'drm_tegra',
+  [files('private.h', 'tegra.c'), config_file],
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : [dep_pthread_stubs],
+  c_args : warn_c_args,
+  version : '0.0.0',
+  install : true,
+)
+
+ext_libdrm_tegra = declare_dependency(
+  link_with : [libdrm, libdrm_tegra],
+  include_directories : [inc_drm, include_directories('.')],
+)
+
+install_headers('tegra.h', subdir : 'libdrm')
+
+pkg.generate(
+  name : 'libdrm_tegra',
+  libraries : libdrm_tegra,
+  subdirs : ['.', 'libdrm'],
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to Tegra kernel DRM services',
+)
+
+test(
+  'tegra-symbol-check',
+  prog_bash,
+  args : [files('tegra-symbol-check'), libdrm_tegra]
+)
diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
new file mode 100644
index 0000000..5a07ce2
--- /dev/null
+++ b/tests/amdgpu/meson.build
@@ -0,0 +1,40 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+files_amdgpu_test = files(
+  'amdgpu_test.c',
+  'basic_tests.c',
+  'bo_tests.c',
+  'cs_tests.c',
+  'vce_tests.c',
+  'uvd_enc_tests.c',
+  'vcn_tests.c',
+  'deadlock_tests.c',
+  'vm_tests.c',
+)
+
+amdgpu_test = executable(
+  'amdgpu_test',
+  files_amdgpu_test,
+  dependencies : [dep_cunit, dep_threads],
+  include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')],
+  link_with : [libdrm, libdrm_amdgpu],
+  install : with_install_tests,
+)
diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build
new file mode 100644
index 0000000..32c5cee
--- /dev/null
+++ b/tests/etnaviv/meson.build
@@ -0,0 +1,54 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+inc_etnaviv_tests = [inc_root, inc_drm, include_directories('../../etnaviv')]
+
+etnaviv_2d_test_files = files(
+  'cmdstream.xml.h',
+  'etnaviv_2d_test.c',
+  'state.xml.h',
+  'state_2d.xml.h',
+  'write_bmp.c',
+  'write_bmp.h',
+)
+
+etnaviv_2d_test = executable(
+  'etnaviv_2d_test',
+  etnaviv_2d_test_files,
+  include_directories : inc_etnaviv_tests,
+  link_with : [libdrm, libdrm_etnaviv],
+  install : with_install_tests,
+)
+
+etnaviv_cmd_stream_test = executable(
+  'etnaviv_cmd_stream_test',
+  files('etnaviv_cmd_stream_test.c'),
+  include_directories : inc_etnaviv_tests,
+  link_with : [libdrm, libdrm_etnaviv],
+  install : with_install_tests,
+)
+
+etnaviv_bo_cache_test = executable(
+  'etnaviv_bo_cache_test',
+  files('etnaviv_bo_cache_test.c'),
+  include_directories : inc_etnaviv_tests,
+  link_with : [libdrm, libdrm_etnaviv],
+  install : with_install_tests,
+)
diff --git a/tests/exynos/meson.build b/tests/exynos/meson.build
new file mode 100644
index 0000000..940c3ce
--- /dev/null
+++ b/tests/exynos/meson.build
@@ -0,0 +1,54 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+inc_exynos = include_directories('../../exynos')
+
+if with_libkms
+  exynos_fimg2d_test = executable(
+    'exynos_fimg2d_test',
+    files('exynos_fimg2d_test.c'),
+    c_args : warn_c_args,
+    include_directories : [inc_root, inc_drm, inc_exynos,
+                           include_directories('../../libkms')],
+    link_with : [libdrm, libkms, libdrm_exynos],
+    dependencies : dep_threads,
+    install : with_install_tests,
+  )
+endif
+
+exynos_fimg2d_perf = executable(
+  'exynos_fimg2d_perf',
+  files('exynos_fimg2d_perf.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm, inc_exynos],
+  link_with : [libdrm, libdrm_exynos],
+  dependencies : dep_threads,
+  install : with_install_tests,
+)
+
+exynos_fimg2d_event = executable(
+  'exynos_fimg2d_event',
+  files('exynos_fimg2d_event.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_drm, inc_exynos],
+  link_with : [libdrm, libdrm_exynos],
+  dependencies : dep_threads,
+  install : with_install_tests,
+)
diff --git a/tests/kms/meson.build b/tests/kms/meson.build
new file mode 100644
index 0000000..e991913
--- /dev/null
+++ b/tests/kms/meson.build
@@ -0,0 +1,54 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+libkms_test_files = files(
+	'libkms-test.h',
+	'libkms-test-crtc.c',
+	'libkms-test-device.c',
+	'libkms-test-framebuffer.c',
+	'libkms-test-plane.c',
+	'libkms-test-screen.c',
+)
+
+libkms_test = static_library(
+  'kms-test',
+  libkms_test_files,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
+
+kms_steal_crtc = executable(
+  'kms-steal-crtc',
+  files('kms-steal-crtc.c'),
+  dependencies : dep_cairo,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : [libkms_test, libutil],
+  install : with_install_tests,
+)
+
+kms_universal_planes = executable(
+  'kms-universal-lanes',
+  files('kms-universal-planes.c'),
+  dependencies : dep_cairo,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : [libkms_test],
+  install : with_install_tests,
+)
diff --git a/tests/kmstest/meson.build b/tests/kmstest/meson.build
new file mode 100644
index 0000000..f713f26
--- /dev/null
+++ b/tests/kmstest/meson.build
@@ -0,0 +1,28 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+kmstest = executable(
+  'kmstest',
+  files('main.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_tests, include_directories('../../libkms'), inc_drm],
+  link_with : [libutil, libkms, libdrm],
+  install : with_install_tests,
+)
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..960ff7b
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,85 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+inc_tests = include_directories('.')
+
+subdir('util')
+subdir('kms')
+subdir('modeprint')
+subdir('proptest')
+subdir('vbltest')
+if with_libkms
+  subdir('kmstest')
+endif
+if with_radeon
+  subdir('radeon')
+endif
+if with_amdgpu and dep_cunit.found()
+  subdir('amdgpu')
+endif
+if with_exynos
+  subdir('exynos')
+endif
+if with_tegra
+  subdir('tegra')
+endif
+if with_etnaviv
+  subdir('etnaviv')
+endif
+if with_nouveau
+  subdir('nouveau')
+endif
+
+drmsl = executable(
+  'drmsl',
+  files('drmsl.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
+
+hash = executable(
+  'hash',
+  files('hash.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
+
+random = executable(
+  'random',
+  files('random.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
+
+drmdevice = executable(
+  'drmdevice',
+  files('drmdevice.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
+
+test('random', random, timeout : 240)
+test('hash', hash)
+test('drmsl', drmsl)
+test('drmdevice', drmdevice)
diff --git a/tests/modeprint/meson.build b/tests/modeprint/meson.build
new file mode 100644
index 0000000..5f0eb24
--- /dev/null
+++ b/tests/modeprint/meson.build
@@ -0,0 +1,29 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+modeprint = executable(
+  'modeprint',
+  files('modeprint.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : libdrm,
+  dependencies : dep_threads,
+  install : with_install_tests,
+)
diff --git a/tests/nouveau/meson.build b/tests/nouveau/meson.build
new file mode 100644
index 0000000..f5d73c1
--- /dev/null
+++ b/tests/nouveau/meson.build
@@ -0,0 +1,30 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+threaded = executable(
+  'threaded',
+  files('threaded.c'),
+  dependencies : [dep_dl, dep_threads],
+  include_directories : [inc_root, inc_drm, include_directories('../../nouveau')],
+  link_with : [libdrm, libdrm_nouveau],
+  c_args : warn_c_args,
+)
+
+test('threaded', threaded)
diff --git a/tests/proptest/meson.build b/tests/proptest/meson.build
new file mode 100644
index 0000000..dcd724f
--- /dev/null
+++ b/tests/proptest/meson.build
@@ -0,0 +1,30 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+proptest_files = files('proptest.c')
+
+proptest = executable(
+  'proptest',
+  files('proptest.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : [libdrm, libutil],
+  install : with_install_tests,
+)
diff --git a/tests/radeon/meson.build b/tests/radeon/meson.build
new file mode 100644
index 0000000..54db231
--- /dev/null
+++ b/tests/radeon/meson.build
@@ -0,0 +1,27 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+radeon_ttm = executable(
+  'radeon_ttm',
+  files('rbo.c', 'rbo.h', 'radeon_ttm.c'),
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  c_args : warn_c_args,
+)
diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build
new file mode 100644
index 0000000..9c74ac4
--- /dev/null
+++ b/tests/tegra/meson.build
@@ -0,0 +1,27 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+openclose = executable(
+  'openclose',
+  files('openclose.c'),
+  include_directories : [inc_root, inc_drm, include_directories('../../tegra')],
+  c_args : warn_c_args,
+  link_with : [libdrm, libdrm_tegra],
+)
diff --git a/tests/util/meson.build b/tests/util/meson.build
new file mode 100644
index 0000000..a0e1d3c
--- /dev/null
+++ b/tests/util/meson.build
@@ -0,0 +1,37 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+util_files = files(
+  'common.h',
+  'format.c',
+  'format.h',
+  'kms.c',
+  'kms.h',
+  'pattern.c',
+  'pattern.h',
+)
+
+libutil = static_library(
+  'util',
+  [util_files, config_file],
+  include_directories : [inc_root, inc_drm],
+  link_with : libdrm,
+  dependencies : dep_cairo
+)
diff --git a/tests/vbltest/meson.build b/tests/vbltest/meson.build
new file mode 100644
index 0000000..4fb1ad3
--- /dev/null
+++ b/tests/vbltest/meson.build
@@ -0,0 +1,28 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+vbltest = executable(
+  'vbltest',
+  files('vbltest.c'),
+  c_args : warn_c_args,
+  include_directories : [inc_root, inc_tests, inc_drm],
+  link_with : [libdrm, libutil],
+  install : with_install_tests,
+)
diff --git a/vc4/meson.build b/vc4/meson.build
new file mode 100644
index 0000000..0136987
--- /dev/null
+++ b/vc4/meson.build
@@ -0,0 +1,28 @@ 
+# Copyright © 2017 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+install_headers('vc4_packet.h', 'vc4_qpu_defines.h', subdir : 'libdrm')
+
+pkg.generate(
+  name : 'libdrm_vc4',
+  version : meson.project_version(),
+  requires_private : 'libdrm',
+  description : 'Userspace interface to vc4 kernel DRM services',
+)