[Mesa-dev] [PATCH 1/3] Add meson build system

Eric Engestrom eric.engestrom at imgtec.com
Fri Jan 5 13:34:53 UTC 2018


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 at 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 at .xml'.format(m)),
> +    output : '@0 at .@1@'.format(m, s),
> +    command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'],
> +    install : true,
> +    install_dir : join_paths(get_option('datadir'), 'man', 'man at 0@'.format(s)),

get_option('mandir')

> +    build_by_default : true,
> +  )
> +endforeach
> +
> +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm']
> +  gen = custom_target(
> +    'gen- at 0@'.format(x),
> +    input : 'drm-memory.xml',
> +    output : '@0 at .xml'.format(x),
> +    command : [prog_sed, '-e',
> +               's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@',
> +               '@INPUT@'],
> +    capture : true,
> +  )
> +  custom_target(
> +    '@0 at .7'.format(x),
> +    input : gen,
> +    output : '@0 at .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 at 0@'.format(a))
> +    warn_c_args += '-Wno- at 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_ at 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_ at 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!


More information about the mesa-dev mailing list