[Mesa-dev] [PATCH 1/3] Add meson build system
Eric Engestrom
eric.engestrom at imgtec.com
Fri Jan 5 13:41:43 UTC 2018
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 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