Message ID | df7a342ec28be7ff1d5df668ae0dcfb5356ceb4f.1515182161.git-series.dylan@pnwbakers.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Friday, 2018-01-05 12:00:58 -0800, Dylan Baker wrote: > This patch adds a complete meson build system, including tests and > install. It has the necessary hooks to allow it be used as a subproject > for other meson based builds such as mesa. > > Signed-off-by: Dylan Baker <dylan.c.baker@intel.com> > Reviewed-and-tested-by: Igor Gnatenko <i.gnatenko.brain@gmail.com> > --- > .editorconfig | 4 +- > amdgpu/.editorconfig | 4 +- > amdgpu/meson.build | 65 +++++++- > data/meson.build | 27 +++- > etnaviv/meson.build | 59 ++++++- > exynos/meson.build | 53 +++++- > freedreno/meson.build | 76 ++++++++- > intel/meson.build | 105 +++++++++++- > libkms/meson.build | 74 ++++++++- > man/meson.build | 67 +++++++- > meson.build | 364 +++++++++++++++++++++++++++++++++++++- > meson_options.txt | 143 +++++++++++++++- > nouveau/meson.build | 58 ++++++- > omap/meson.build | 53 +++++- > radeon/meson.build | 63 ++++++- > tegra/meson.build | 52 +++++- > tests/amdgpu/meson.build | 34 +++- > tests/etnaviv/meson.build | 45 +++++- > tests/exynos/meson.build | 54 +++++- > tests/kms/meson.build | 49 +++++- > tests/kmstest/meson.build | 30 +++- > tests/meson.build | 86 +++++++++- > tests/modeprint/meson.build | 29 +++- > tests/modetest/meson.build | 29 +++- > tests/nouveau/meson.build | 30 +++- > tests/proptest/meson.build | 28 +++- > tests/radeon/meson.build | 27 +++- > tests/tegra/meson.build | 27 +++- > tests/util/meson.build | 28 +++- > tests/vbltest/meson.build | 28 +++- > vc4/meson.build | 28 +++- > 31 files changed, 1819 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/modetest/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..29b4f39 100644 > --- a/.editorconfig > +++ b/.editorconfig > @@ -17,3 +17,7 @@ indent_style = tab > [*.m4] > indent_style = space > indent_size = 2 > + > +[{meson.build,meson_options.txt}] > +indent_style = space > +indent_size = 2 > diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig > index 2528d67..426273f 100644 > --- a/amdgpu/.editorconfig > +++ b/amdgpu/.editorconfig > @@ -7,3 +7,7 @@ indent_style = tab > indent_size = 8 > tab_width = 8 > insert_final_newline = true > + > +[meson.build] > +indent_style = space > +indent_size = 2 > diff --git a/amdgpu/meson.build b/amdgpu/meson.build > new file mode 100644 > index 0000000..55ab9d1 > --- /dev/null > +++ b/amdgpu/meson.build > @@ -0,0 +1,65 @@ > +# Copyright © 2017-2018 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. > + > + > +datadir_amdgpu = join_paths(get_option('datadir'), 'libdrm', 'amdgpu.ids') > + > +libdrm_amdgpu = shared_library( > + 'drm_amdgpu', > + [ > + files( > + 'amdgpu_asic_id.c', 'amdgpu_bo.c', 'amdgpu_cs.c', 'amdgpu_device.c', > + 'amdgpu_gpu_info.c', 'amdgpu_vamgr.c', 'amdgpu_vm.c', 'util_hash.c', > + 'util_hash_table.c', > + ), > + config_file, > + ], > + c_args : [ > + warn_c_args, > + '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(datadir_amdgpu), > + ], > + include_directories : [inc_root, inc_drm], > + link_with : libdrm, > + dependencies : dep_pthread_stubs, > + version : '1.0.0', > + install : true, > +) > + > +install_headers('amdgpu.h', subdir : 'libdrm') > + > +pkg.generate( > + name : 'libdrm_amdgpu', > + libraries : libdrm_amdgpu, > + subdirs : ['.', 'libdrm'], > + version : meson.project_version(), > + requires_private : 'libdrm', > + description : 'Userspace interface to kernel DRM services for amdgpu', > +) > + > +ext_libdrm_amdgpu = declare_dependency( > + link_with : [libdrm, libdrm_amdgpu], > + include_directories : [inc_drm, include_directories('.')], > +) > + > +test( > + 'amdgpu-symbol-check', > + prog_bash, > + args : [files('amdgpu-symbol-check'), libdrm_amdgpu] > +) > diff --git a/data/meson.build b/data/meson.build > new file mode 100644 > index 0000000..9c26b66 > --- /dev/null > +++ b/data/meson.build > @@ -0,0 +1,27 @@ > +# Copyright © 2017-2018 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 : 'rw-r--r--', > + install_dir : datadir_amdgpu, > + ) > +endif > diff --git a/etnaviv/meson.build b/etnaviv/meson.build > new file mode 100644 > index 0000000..1767733 > --- /dev/null > +++ b/etnaviv/meson.build > @@ -0,0 +1,59 @@ > +# Copyright © 2017-2018 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_etnaviv = shared_library( > + 'drm_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', > + ), > + 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..c96ad4e > --- /dev/null > +++ b/exynos/meson.build > @@ -0,0 +1,53 @@ > +# Copyright © 2017-2018 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'), config_file], > + c_args : warn_c_args, > + include_directories : [inc_root, inc_drm], > + link_with : libdrm, > + dependencies : [dep_pthread_stubs], > + version : '1.0.0', > + install : true, > +) > + > +install_headers('exynos_drmif.h', subdir : 'libdrm') > +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos') > + > +ext_libdrm_exynos = declare_dependency( > + link_with : [libdrm, libdrm_exynos], > + include_directories : [inc_drm, include_directories('.')], > +) > + > +pkg.generate( > + name : 'libdrm_exynos', > + libraries : libdrm_exynos, > + subdirs : ['.', 'libdrm', 'exynos'], > + version : '0.7', > + requires_private : 'libdrm', > + description : 'Userspace interface to exynos kernel DRM services', > +) > + > +test( > + 'exynos-symbol-check', > + prog_bash, > + args : [files('exynos-symbol-check'), libdrm_exynos] > +) > diff --git a/freedreno/meson.build b/freedreno/meson.build > new file mode 100644 > index 0000000..b4035e1 > --- /dev/null > +++ b/freedreno/meson.build > @@ -0,0 +1,76 @@ > +# Copyright © 2017-2018 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_ringbuffer.c', > + 'freedreno_bo.c', > + 'freedreno_bo_cache.c', > + 'msm/msm_bo.c', > + 'msm/msm_device.c', > + 'msm/msm_pipe.c', > + 'msm/msm_ringbuffer.c', > +) > + > +if with_freedreno_kgsl > + files_freedreno += files( > + 'kgsl/kgsl_bo.c', > + 'kgsl/kgsl_device.c', > + 'kgsl/kgsl_pipe.c', > + 'kgsl/kgsl_ringbuffer.c', > + ) > +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..ad87727 > --- /dev/null > +++ b/intel/meson.build > @@ -0,0 +1,105 @@ > +# Copyright © 2017-2018 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_intel = shared_library( > + 'drm_intel', > + [ > + files( > + 'intel_bufmgr.c', 'intel_bufmgr_fake.c', 'intel_bufmgr_gem.c', > + 'intel_decode.c', 'mm.c', > + ), > + 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..9eff431 > --- /dev/null > +++ b/libkms/meson.build > @@ -0,0 +1,74 @@ > +# Copyright © 2017-2018 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( > + '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..45eaeda > --- /dev/null > +++ b/man/meson.build > @@ -0,0 +1,67 @@ > +# Copyright © 2017-2018 Intel Corporation > + > +# Permission is hereby granted, free of charge, to any person obtaining a copy > +# of this software and associated documentation files (the "Software"), to deal > +# in the Software without restriction, including without limitation the rights > +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > +# copies of the Software, and to permit persons to whom the Software is > +# furnished to do so, subject to the following conditions: > + > +# The above copyright notice and this permission notice shall be included in > +# all copies or substantial portions of the Software. > + > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > +# SOFTWARE. > + > +xsltproc_args = [ > + '--stringparam', 'man.authors.section.enabled', '0', > + '--stringparam', 'man.copyright.section.enabled', '0', > + '--stringparam', 'funcsynopsis.style', 'ansi', > + '--stringparam', 'man.output.quietly', '1', > + '--nonet', manpage_style, > +] > + > +xmls = [ > + ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'], > + ['drmHandleEvent', '3'], ['drmModeGetResources', '3'] > +] > +foreach x : xmls > + m = x[0] > + s = x[1] > + custom_target( > + m, > + input : files('@0@.xml'.format(m)), > + output : '@0@.@1@'.format(m, s), > + command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'], > + install : true, > + install_dir : join_paths(get_option('mandir'), 'man@0@'.format(s)), > + build_by_default : true, > + ) > +endforeach > + > +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm'] > + gen = custom_target( > + 'gen-@0@'.format(x), > + input : 'drm-memory.xml', > + output : '@0@.xml'.format(x), > + command : [ > + prog_sed, '-e', 's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@', > + '@INPUT@', > + ], > + capture : true, > + ) > + custom_target( > + '@0@.7'.format(x), > + input : gen, > + output : '@0@.7'.format(x, '7'), > + command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'], > + install : true, > + install_dir : join_paths(get_option('mandir'), 'man7'), > + build_by_default : true, > + ) > +endforeach > diff --git a/meson.build b/meson.build > new file mode 100644 > index 0000000..294fa90 > --- /dev/null > +++ b/meson.build > @@ -0,0 +1,364 @@ > +# Copyright © 2017-2018 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', > + meson_version : '>= 0.42', > + default_options : ['buildtype=debugoptimized', 'c_std=gnu99'], > +) > + > +pkg = import('pkgconfig') > + > +with_udev = get_option('udev') > +with_freedreno_kgsl = get_option('freedreno-kgsl') > +with_install_tests = get_option('install-test-programs') > +with_cairo_tests = get_option('cairo-tests') > +with_valgrind = get_option('valgrind') > + > +config = configuration_data() > + > +# TODO: openbsd is guess, the others are correct > +if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system()) > + dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4') > +else > + dep_pthread_stubs = [] > +endif > +dep_threads = dependency('threads') > + > +cc = meson.get_compiler('c') > + > +# Check for atomics > +intel_atomics = false > +lib_atomics = false > + > +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') > + intel_atomics = true > + with_atomics = true > +elif cc.has_header('atomic_ops.h') > + lib_atomics = true > + with_atomics = true > +elif cc.has_function('atomic_cas_uint') > + with_atomics = true > +else > + with_atomics = false > +endif > + > +config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', intel_atomics) > +config.set10('HAVE_LIB_ATOMIC_OPS', lib_atomics) > + > +with_intel = false > +_intel = get_option('intel') > +if _intel != 'false' > + if _intel == 'true' and not with_atomics > + error('libdrm_intel requires atomics.') > + else > + with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86') > + endif > +endif > + > +with_radeon = false > +_radeon = get_option('radeon') > +if _radeon != 'false' > + if _radeon == 'true' and not with_atomics > + error('libdrm_radeon requires atomics.') > + endif > + with_radeon = true > +endif > + > +with_amdgpu = false > +_amdgpu = get_option('amdgpu') > +if _amdgpu != 'false' > + if _amdgpu == 'true' and not with_atomics > + error('libdrm_amdgpu requires atomics.') > + endif > + with_amdgpu = true > +endif > + > +with_nouveau = false > +_nouveau = get_option('nouveau') > +if _nouveau != 'false' > + if _nouveau == 'true' and not with_atomics > + error('libdrm_nouveau requires atomics.') > + endif > + with_nouveau = true > +endif > + > +with_vmwgfx = false > +_vmwgfx = get_option('vmwgfx') > +if _vmwgfx != 'false' > + with_vmwgfx = true > +endif > + > +with_omap = false > +_omap = get_option('omap') > +if _omap == 'true' > + if not with_atomics > + error('libdrm_omap requires atomics.') > + endif > + with_omap = true > +endif > + > +with_freedreno = false > +_freedreno = get_option('freedreno') > +if _freedreno != 'false' > + if _freedreno == 'true' and not with_atomics > + error('libdrm_freedreno requires atomics.') > + else > + with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family()) > + endif > +endif > + > +with_tegra = false > +_tegra = get_option('tegra') > +if _tegra == 'true' > + if not with_atomics > + error('libdrm_tegra requires atomics.') > + endif > + with_tegra = true > +endif > + > +with_etnaviv = false > +_etnaviv = get_option('etnaviv') > +if _etnaviv == 'true' > + if not with_atomics > + error('libdrm_etnaviv requires atomics.') > + endif > + with_etnaviv = true > +endif > + > +with_exynos = get_option('exynos') == 'true' > + > +with_vc4 = false > +_vc4 = get_option('vc4') > +if _vc4 != 'false' > + with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family()) > +endif > + > +# XXX: Aparently only freebsd and dragonfly bsd actually need this (and > +# gnu/kfreebsd), not openbsd and netbsd > +with_libkms = false > +_libkms = get_option('libkms') > +if _libkms != 'false' > + with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system()) > +endif > + > +if with_udev > + dep_udev = dependency('udev') > + config.set10('UDEV', true) > +else > + dep_udev = [] > +endif > + > +# Among others FreeBSD does not have a separate dl library. > +if not cc.has_function('dlsym') > + dep_dl = cc.find_library('dl', required : with_nouveau) > +else > + dep_dl = [] > +endif > +# clock_gettime might require -rt, or it might not. find out > +if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>') > + # XXX: untested > + dep_rt = cc.find_library('rt') > +else > + dep_rt = [] > +endif > +dep_m = cc.find_library('m', required : false) > +if cc.has_header('sys/sysctl.h') > + config.set10('HAVE_SYS_SYSCTL_H', true) > +endif > +if cc.has_header('sys/select.h') > + config.set10('HAVE_SYS_SELECT_H', true) > +endif > +if cc.has_header_symbol('sys/sysmacros.h', 'major') > + config.set10('MAJOR_IN_SYSMACROS', true) > +elif cc.has_header_symbol('sys/mkdev.h', 'major') > + config.set10('MAJOR_IN_MKDEV', true) > +endif > +if cc.has_function('open_memstream') > + config.set10('HAVE_OPEN_MEMSTREAM', true) > +endif > + > +warn_c_args = [] > +foreach a : ['-Wall', '-Wextra', '-Wsign-compare', > + '-Werror-implicit-function-declaration', '-Wpointer-arith', > + '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes', > + '-Wmissing-declarations', '-Wnested-externs', '-Wpacked', > + '-Wswitch-enum', '-Wmissing-format-attribute', > + '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', > + '-Wdeclaration-after-statement', '-Wold-style-definition'] > + if cc.has_argument(a) > + warn_c_args += a > + endif > +endforeach > +# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list > +# of options > +foreach a : ['unused-parameter', 'attributes', 'long-long', > + 'missing-field-initializers'] > + if cc.has_argument('-W@0@'.format(a)) > + warn_c_args += '-Wno-@0@'.format(a) > + endif > +endforeach > + > + > +dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel) > +dep_cunit = dependency('cunit', version : '>= 2.1', required : false) > +dep_cairo = dependency('cairo', required : with_cairo_tests == 'true') > +dep_valgrind = dependency('valgrind', required : with_valgrind == 'true') > + > +with_man_pages = get_option('man-pages') > +prog_xslt = find_program('xsltproc', required : with_man_pages == 'true') > +prog_sed = find_program('sed', required : with_man_pages == 'true') > +manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' > +if prog_xslt.found() > + if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0 > + if with_man_pages == 'true' > + error('Manpage style sheet cannot be found') > + endif > + with_man_pages = 'false' > + endif > +endif > +with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found() > + > +# Used for tets > +prog_bash = find_program('bash') > + > +if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''', > + name : 'compiler supports __attribute__(("hidden"))') > + config.set10('HAVE_VISIBILITY', true) > +endif > + > +foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'], > + [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'], > + [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'], > + [with_tegra, 'TEGRA'], [with_vc4, 'VC4'], > + [with_etnaviv, 'ETNAVIV']] > + if t[0] > + config.set10('HAVE_@0@'.format(t[1]), true) > + endif > +endforeach > +if with_freedreno_kgsl and not with_freedreno > + error('cannot enable freedreno-kgsl without freedreno support') > +endif you dropped HAVE_FREEDRENO_KGSL here? with that fixed, Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> thanks :) > +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') > + > +libdrm = shared_library( > + 'drm', > + [files( > + 'xf86drm.c', 'xf86drmHash.c', 'xf86drmRandom.c', 'xf86drmSL.c', > + 'xf86drmMode.c' > + ), > + config_file, > + ], > + c_args : warn_c_args, > + dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m], > + include_directories : inc_drm, > + version : '2.4.0', > + install : true, > +) > + > +ext_libdrm = declare_dependency( > + link_with : libdrm, > + include_directories : inc_drm, > +) > + > +install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h') > +install_headers( > + 'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h', > + 'include/drm/drm_sarea.h', 'include/drm/i915_drm.h', > + 'include/drm/mach64_drm.h', 'include/drm/mga_drm.h', > + 'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h', > + 'include/drm/r128_drm.h', 'include/drm/radeon_drm.h', > + 'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h', > + 'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h', > + 'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h', > + subdir : 'libdrm', > +) > +if with_vmwgfx > + install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm') > +endif > + > +pkg.generate( > + name : 'libdrm', > + libraries : libdrm, > + subdirs : ['.', 'libdrm'], > + version : meson.project_version(), > + description : 'Userspace interface to kernel DRM services', > +) > + > +if with_libkms > + subdir('libkms') > +endif > +if with_intel > + subdir('intel') > +endif > +if with_nouveau > + subdir('nouveau') > +endif > +if with_radeon > + subdir('radeon') > +endif > +if with_amdgpu > + subdir('amdgpu') > +endif > +if with_omap > + subdir('omap') > +endif > +if with_exynos > + subdir('exynos') > +endif > +if with_freedreno > + subdir('freedreno') > +endif > +if with_tegra > + subdir('tegra') > +endif > +if with_vc4 > + subdir('vc4') > +endif > +if with_etnaviv > + subdir('etnaviv') > +endif > +if with_man_pages > + subdir('man') > +endif > +subdir('data') > +subdir('tests') > diff --git a/meson_options.txt b/meson_options.txt > new file mode 100644 > index 0000000..8af33f1 > --- /dev/null > +++ b/meson_options.txt > @@ -0,0 +1,143 @@ > +# 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'], > + description : 'Build libkms mm abstraction library.', > +) > +option( > + 'intel', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for Intel's KMS API.''', > +) > +option( > + 'radeon', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for radeons's KMS API.''', > +) > +option( > + 'amdgpu', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for amdgpu's KMS API.''', > +) > +option( > + 'nouveau', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for nouveau's KMS API.''', > +) > +option( > + 'vmwgfx', > + type : 'combo', > + value : 'true', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for vmgfx's KMS API.''', > +) > +option( > + 'omap', > + type : 'combo', > + value : 'false', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for OMAP's experimental KMS API.''', > +) > +option( > + 'exynos', > + type : 'combo', > + value : 'false', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for EXYNOS's experimental KMS API.''', > +) > +option( > + 'freedreno', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for freedreno's KMS API.''', > +) > +option( > + 'tegra', > + type : 'combo', > + value : 'false', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for Tegra's experimental KMS API.''', > +) > +option( > + 'vc4', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for vc4's KMS API.''', > +) > +option( > + 'etnaviv', > + type : 'combo', > + value : 'false', > + choices : ['true', 'false', 'auto'], > + description : '''Enable support for etnaviv's experimental KMS API.''', > +) > +option( > + 'cairo-tests', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : 'Enable support for Cairo rendering in tests.', > +) > +option( > + 'man-pages', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : 'Enable manpage generation and installation.', > +) > +option( > + 'valgrind', > + type : 'combo', > + value : 'auto', > + choices : ['true', 'false', 'auto'], > + description : 'Build libdrm with valgrind support.', > +) > +option( > + 'freedreno-kgsl', > + type : 'boolean', > + value : false, > + description : 'Enable support for freedreno to use downstream android kernel API.', > +) > +option( > + 'install-test-programs', > + type : 'boolean', > + value : false, > + description : 'Install test programs.', > +) > +option( > + 'udev', > + type : 'boolean', > + value : false, > + description : 'Enable support for using udev instead of mknod.', > +) > diff --git a/nouveau/meson.build b/nouveau/meson.build > new file mode 100644 > index 0000000..bfecf84 > --- /dev/null > +++ b/nouveau/meson.build > @@ -0,0 +1,58 @@ > +# Copyright © 2017-2018 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_nouveau = shared_library( > + 'drm_nouveau', > + [files( 'nouveau.c', 'pushbuf.c', 'bufctx.c', 'abi16.c'), 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..b02166f > --- /dev/null > +++ b/radeon/meson.build > @@ -0,0 +1,63 @@ > +# Copyright © 2017-2018 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_radeon = shared_library( > + 'drm_radeon', > + [ > + files( > + 'radeon_bo_gem.c', 'radeon_cs_gem.c', 'radeon_cs_space.c', 'radeon_bo.c', > + 'radeon_cs.c', 'radeon_surface.c', > + ), > + 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..99fdd19 > --- /dev/null > +++ b/tegra/meson.build > @@ -0,0 +1,52 @@ > +# Copyright © 2017-2018 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('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..4c1237c > --- /dev/null > +++ b/tests/amdgpu/meson.build > @@ -0,0 +1,34 @@ > +# Copyright © 2017-2018 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 dep_cunit.found() > + amdgpu_test = executable( > + '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', > + ), > + dependencies : [dep_cunit, dep_threads], > + include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')], > + link_with : [libdrm, libdrm_amdgpu], > + install : with_install_tests, > + ) > +endif > diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build > new file mode 100644 > index 0000000..8b4a3cf > --- /dev/null > +++ b/tests/etnaviv/meson.build > @@ -0,0 +1,45 @@ > +# Copyright © 2017-2018 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 = executable( > + 'etnaviv_2d_test', > + files('etnaviv_2d_test.c', 'write_bmp.c'), > + 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..1f7f724 > --- /dev/null > +++ b/tests/kms/meson.build > @@ -0,0 +1,49 @@ > +# Copyright © 2017-2018 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 = static_library( > + 'kms-test', > + files( > + 'libkms-test-crtc.c', 'libkms-test-device.c', 'libkms-test-framebuffer.c', > + 'libkms-test-plane.c', 'libkms-test-screen.c', > + ), > + 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-planes', > + 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..a47d495 > --- /dev/null > +++ b/tests/kmstest/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. > + > +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..fdf950b > --- /dev/null > +++ b/tests/meson.build > @@ -0,0 +1,86 @@ > +# Copyright © 2017-2018 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('modetest') > +subdir('vbltest') > +if with_libkms > + subdir('kmstest') > +endif > +if with_radeon > + subdir('radeon') > +endif > +if with_amdgpu > + 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/modetest/meson.build b/tests/modetest/meson.build > new file mode 100644 > index 0000000..2a08184 > --- /dev/null > +++ b/tests/modetest/meson.build > @@ -0,0 +1,29 @@ > +# Copyright © 2018 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. > + > +modetest = executable( > + 'modetest', > + files('buffers.c', 'cursor.c', 'modetest.c'), > + c_args : [warn_c_args, '-Wno-pointer-arith'], > + include_directories : [inc_root, inc_tests, inc_drm], > + dependencies : [dep_threads, dep_cairo], > + link_with : [libdrm, libutil], > + 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..22d7473 > --- /dev/null > +++ b/tests/proptest/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. > + > +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..9e4f916 > --- /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', '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..7fa1a4b > --- /dev/null > +++ b/tests/util/meson.build > @@ -0,0 +1,28 @@ > +# Copyright © 2017-2018 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. > + > + > +libutil = static_library( > + 'util', > + [files('format.c', 'kms.c', 'pattern.c'), 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..ae52ab8 > --- /dev/null > +++ b/tests/vbltest/meson.build > @@ -0,0 +1,28 @@ > +# Copyright © 2017-2018 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 > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/.editorconfig b/.editorconfig index 893b7be..29b4f39 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,3 +17,7 @@ indent_style = tab [*.m4] indent_style = space indent_size = 2 + +[{meson.build,meson_options.txt}] +indent_style = space +indent_size = 2 diff --git a/amdgpu/.editorconfig b/amdgpu/.editorconfig index 2528d67..426273f 100644 --- a/amdgpu/.editorconfig +++ b/amdgpu/.editorconfig @@ -7,3 +7,7 @@ indent_style = tab indent_size = 8 tab_width = 8 insert_final_newline = true + +[meson.build] +indent_style = space +indent_size = 2 diff --git a/amdgpu/meson.build b/amdgpu/meson.build new file mode 100644 index 0000000..55ab9d1 --- /dev/null +++ b/amdgpu/meson.build @@ -0,0 +1,65 @@ +# Copyright © 2017-2018 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. + + +datadir_amdgpu = join_paths(get_option('datadir'), 'libdrm', 'amdgpu.ids') + +libdrm_amdgpu = shared_library( + 'drm_amdgpu', + [ + files( + 'amdgpu_asic_id.c', 'amdgpu_bo.c', 'amdgpu_cs.c', 'amdgpu_device.c', + 'amdgpu_gpu_info.c', 'amdgpu_vamgr.c', 'amdgpu_vm.c', 'util_hash.c', + 'util_hash_table.c', + ), + config_file, + ], + c_args : [ + warn_c_args, + '-DAMDGPU_ASIC_ID_TABLE="@0@"'.format(datadir_amdgpu), + ], + include_directories : [inc_root, inc_drm], + link_with : libdrm, + dependencies : dep_pthread_stubs, + version : '1.0.0', + install : true, +) + +install_headers('amdgpu.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_amdgpu', + libraries : libdrm_amdgpu, + subdirs : ['.', 'libdrm'], + version : meson.project_version(), + requires_private : 'libdrm', + description : 'Userspace interface to kernel DRM services for amdgpu', +) + +ext_libdrm_amdgpu = declare_dependency( + link_with : [libdrm, libdrm_amdgpu], + include_directories : [inc_drm, include_directories('.')], +) + +test( + 'amdgpu-symbol-check', + prog_bash, + args : [files('amdgpu-symbol-check'), libdrm_amdgpu] +) diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..9c26b66 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,27 @@ +# Copyright © 2017-2018 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 : 'rw-r--r--', + install_dir : datadir_amdgpu, + ) +endif diff --git a/etnaviv/meson.build b/etnaviv/meson.build new file mode 100644 index 0000000..1767733 --- /dev/null +++ b/etnaviv/meson.build @@ -0,0 +1,59 @@ +# Copyright © 2017-2018 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_etnaviv = shared_library( + 'drm_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', + ), + 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..c96ad4e --- /dev/null +++ b/exynos/meson.build @@ -0,0 +1,53 @@ +# Copyright © 2017-2018 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'), config_file], + c_args : warn_c_args, + include_directories : [inc_root, inc_drm], + link_with : libdrm, + dependencies : [dep_pthread_stubs], + version : '1.0.0', + install : true, +) + +install_headers('exynos_drmif.h', subdir : 'libdrm') +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos') + +ext_libdrm_exynos = declare_dependency( + link_with : [libdrm, libdrm_exynos], + include_directories : [inc_drm, include_directories('.')], +) + +pkg.generate( + name : 'libdrm_exynos', + libraries : libdrm_exynos, + subdirs : ['.', 'libdrm', 'exynos'], + version : '0.7', + requires_private : 'libdrm', + description : 'Userspace interface to exynos kernel DRM services', +) + +test( + 'exynos-symbol-check', + prog_bash, + args : [files('exynos-symbol-check'), libdrm_exynos] +) diff --git a/freedreno/meson.build b/freedreno/meson.build new file mode 100644 index 0000000..b4035e1 --- /dev/null +++ b/freedreno/meson.build @@ -0,0 +1,76 @@ +# Copyright © 2017-2018 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_ringbuffer.c', + 'freedreno_bo.c', + 'freedreno_bo_cache.c', + 'msm/msm_bo.c', + 'msm/msm_device.c', + 'msm/msm_pipe.c', + 'msm/msm_ringbuffer.c', +) + +if with_freedreno_kgsl + files_freedreno += files( + 'kgsl/kgsl_bo.c', + 'kgsl/kgsl_device.c', + 'kgsl/kgsl_pipe.c', + 'kgsl/kgsl_ringbuffer.c', + ) +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..ad87727 --- /dev/null +++ b/intel/meson.build @@ -0,0 +1,105 @@ +# Copyright © 2017-2018 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_intel = shared_library( + 'drm_intel', + [ + files( + 'intel_bufmgr.c', 'intel_bufmgr_fake.c', 'intel_bufmgr_gem.c', + 'intel_decode.c', 'mm.c', + ), + 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..9eff431 --- /dev/null +++ b/libkms/meson.build @@ -0,0 +1,74 @@ +# Copyright © 2017-2018 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( + '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..45eaeda --- /dev/null +++ b/man/meson.build @@ -0,0 +1,67 @@ +# Copyright © 2017-2018 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +xsltproc_args = [ + '--stringparam', 'man.authors.section.enabled', '0', + '--stringparam', 'man.copyright.section.enabled', '0', + '--stringparam', 'funcsynopsis.style', 'ansi', + '--stringparam', 'man.output.quietly', '1', + '--nonet', manpage_style, +] + +xmls = [ + ['drm', '7'], ['drm-kms', '7'], ['drm-memory', '7'], ['drmAvailable', '3'], + ['drmHandleEvent', '3'], ['drmModeGetResources', '3'] +] +foreach x : xmls + m = x[0] + s = x[1] + custom_target( + m, + input : files('@0@.xml'.format(m)), + output : '@0@.@1@'.format(m, s), + command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT0@'], + install : true, + install_dir : join_paths(get_option('mandir'), 'man@0@'.format(s)), + build_by_default : true, + ) +endforeach + +foreach x : ['drm-mm', 'drm-gem', 'drm-ttm'] + gen = custom_target( + 'gen-@0@'.format(x), + input : 'drm-memory.xml', + output : '@0@.xml'.format(x), + command : [ + prog_sed, '-e', 's@^\.so \([a-z_]\+\)\.\([0-9]\)$$@\.so man\2\/\1\.\2@', + '@INPUT@', + ], + capture : true, + ) + custom_target( + '@0@.7'.format(x), + input : gen, + output : '@0@.7'.format(x, '7'), + command : [prog_xslt, '-o', '@OUTPUT@', xsltproc_args, '@INPUT@'], + install : true, + install_dir : join_paths(get_option('mandir'), 'man7'), + build_by_default : true, + ) +endforeach diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..294fa90 --- /dev/null +++ b/meson.build @@ -0,0 +1,364 @@ +# Copyright © 2017-2018 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', + meson_version : '>= 0.42', + default_options : ['buildtype=debugoptimized', 'c_std=gnu99'], +) + +pkg = import('pkgconfig') + +with_udev = get_option('udev') +with_freedreno_kgsl = get_option('freedreno-kgsl') +with_install_tests = get_option('install-test-programs') +with_cairo_tests = get_option('cairo-tests') +with_valgrind = get_option('valgrind') + +config = configuration_data() + +# TODO: openbsd is guess, the others are correct +if ['freebsd', 'dragonfly', 'netbsd', 'openbsd'].contains(host_machine.system()) + dep_pthread_stubs = dependency('pthread-stubs', version : '>= 0.4') +else + dep_pthread_stubs = [] +endif +dep_threads = dependency('threads') + +cc = meson.get_compiler('c') + +# Check for atomics +intel_atomics = false +lib_atomics = false + +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') + intel_atomics = true + with_atomics = true +elif cc.has_header('atomic_ops.h') + lib_atomics = true + with_atomics = true +elif cc.has_function('atomic_cas_uint') + with_atomics = true +else + with_atomics = false +endif + +config.set10('HAVE_LIBDRM_ATOMIC_PRIMITIVES', intel_atomics) +config.set10('HAVE_LIB_ATOMIC_OPS', lib_atomics) + +with_intel = false +_intel = get_option('intel') +if _intel != 'false' + if _intel == 'true' and not with_atomics + error('libdrm_intel requires atomics.') + else + with_intel = _intel == 'true' or host_machine.cpu_family().startswith('x86') + endif +endif + +with_radeon = false +_radeon = get_option('radeon') +if _radeon != 'false' + if _radeon == 'true' and not with_atomics + error('libdrm_radeon requires atomics.') + endif + with_radeon = true +endif + +with_amdgpu = false +_amdgpu = get_option('amdgpu') +if _amdgpu != 'false' + if _amdgpu == 'true' and not with_atomics + error('libdrm_amdgpu requires atomics.') + endif + with_amdgpu = true +endif + +with_nouveau = false +_nouveau = get_option('nouveau') +if _nouveau != 'false' + if _nouveau == 'true' and not with_atomics + error('libdrm_nouveau requires atomics.') + endif + with_nouveau = true +endif + +with_vmwgfx = false +_vmwgfx = get_option('vmwgfx') +if _vmwgfx != 'false' + with_vmwgfx = true +endif + +with_omap = false +_omap = get_option('omap') +if _omap == 'true' + if not with_atomics + error('libdrm_omap requires atomics.') + endif + with_omap = true +endif + +with_freedreno = false +_freedreno = get_option('freedreno') +if _freedreno != 'false' + if _freedreno == 'true' and not with_atomics + error('libdrm_freedreno requires atomics.') + else + with_freedreno = _freedreno == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family()) + endif +endif + +with_tegra = false +_tegra = get_option('tegra') +if _tegra == 'true' + if not with_atomics + error('libdrm_tegra requires atomics.') + endif + with_tegra = true +endif + +with_etnaviv = false +_etnaviv = get_option('etnaviv') +if _etnaviv == 'true' + if not with_atomics + error('libdrm_etnaviv requires atomics.') + endif + with_etnaviv = true +endif + +with_exynos = get_option('exynos') == 'true' + +with_vc4 = false +_vc4 = get_option('vc4') +if _vc4 != 'false' + with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family()) +endif + +# XXX: Aparently only freebsd and dragonfly bsd actually need this (and +# gnu/kfreebsd), not openbsd and netbsd +with_libkms = false +_libkms = get_option('libkms') +if _libkms != 'false' + with_libkms = _libkms == 'true' or ['linux', 'freebsd', 'dragonfly'].contains(host_machine.system()) +endif + +if with_udev + dep_udev = dependency('udev') + config.set10('UDEV', true) +else + dep_udev = [] +endif + +# Among others FreeBSD does not have a separate dl library. +if not cc.has_function('dlsym') + dep_dl = cc.find_library('dl', required : with_nouveau) +else + dep_dl = [] +endif +# clock_gettime might require -rt, or it might not. find out +if not cc.has_function('clock_gettime', prefix : '#define _GNU_SOURCE\n#include <time.h>') + # XXX: untested + dep_rt = cc.find_library('rt') +else + dep_rt = [] +endif +dep_m = cc.find_library('m', required : false) +if cc.has_header('sys/sysctl.h') + config.set10('HAVE_SYS_SYSCTL_H', true) +endif +if cc.has_header('sys/select.h') + config.set10('HAVE_SYS_SELECT_H', true) +endif +if cc.has_header_symbol('sys/sysmacros.h', 'major') + config.set10('MAJOR_IN_SYSMACROS', true) +elif cc.has_header_symbol('sys/mkdev.h', 'major') + config.set10('MAJOR_IN_MKDEV', true) +endif +if cc.has_function('open_memstream') + config.set10('HAVE_OPEN_MEMSTREAM', true) +endif + +warn_c_args = [] +foreach a : ['-Wall', '-Wextra', '-Wsign-compare', + '-Werror-implicit-function-declaration', '-Wpointer-arith', + '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes', + '-Wmissing-declarations', '-Wnested-externs', '-Wpacked', + '-Wswitch-enum', '-Wmissing-format-attribute', + '-Wstrict-aliasing=2', '-Winit-self', '-Winline', '-Wshadow', + '-Wdeclaration-after-statement', '-Wold-style-definition'] + if cc.has_argument(a) + warn_c_args += a + endif +endforeach +# GCC will never error for -Wno-*, so check for -W* then add -Wno-* to the list +# of options +foreach a : ['unused-parameter', 'attributes', 'long-long', + 'missing-field-initializers'] + if cc.has_argument('-W@0@'.format(a)) + warn_c_args += '-Wno-@0@'.format(a) + endif +endforeach + + +dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel) +dep_cunit = dependency('cunit', version : '>= 2.1', required : false) +dep_cairo = dependency('cairo', required : with_cairo_tests == 'true') +dep_valgrind = dependency('valgrind', required : with_valgrind == 'true') + +with_man_pages = get_option('man-pages') +prog_xslt = find_program('xsltproc', required : with_man_pages == 'true') +prog_sed = find_program('sed', required : with_man_pages == 'true') +manpage_style = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' +if prog_xslt.found() + if run_command(prog_xslt, '--nonet', manpage_style).returncode() != 0 + if with_man_pages == 'true' + error('Manpage style sheet cannot be found') + endif + with_man_pages = 'false' + endif +endif +with_man_pages = with_man_pages != 'false' and prog_xslt.found() and prog_sed.found() + +# Used for tets +prog_bash = find_program('bash') + +if cc.compiles('''int foo_hidden(void) __attribute__((visibility(("hidden"))));''', + name : 'compiler supports __attribute__(("hidden"))') + config.set10('HAVE_VISIBILITY', true) +endif + +foreach t : [[with_intel, 'INTEL'], [with_vmwgfx, 'VMWGFX'], + [with_nouveau, 'NOUVEAU'], [with_omap, 'OMAP'], + [with_exynos, 'EXYNOS'], [with_freedreno, 'FREEDRENO'], + [with_tegra, 'TEGRA'], [with_vc4, 'VC4'], + [with_etnaviv, 'ETNAVIV']] + if t[0] + config.set10('HAVE_@0@'.format(t[1]), true) + endif +endforeach +if with_freedreno_kgsl and not with_freedreno + error('cannot enable freedreno-kgsl without freedreno support') +endif +if dep_cairo.found() + config.set10('HAVE_CAIRO', true) +endif +if dep_valgrind.found() + config.set10('HAVE_VALGRIND', true) +endif + +config.set10('_GNU_SOURCE', true) +config_file = configure_file( + configuration : config, + output : 'config.h', +) +add_project_arguments('-DHAVE_CONFIG_H', language : 'c') + +inc_root = include_directories('.') +inc_drm = include_directories('include/drm') + +libdrm = shared_library( + 'drm', + [files( + 'xf86drm.c', 'xf86drmHash.c', 'xf86drmRandom.c', 'xf86drmSL.c', + 'xf86drmMode.c' + ), + config_file, + ], + c_args : warn_c_args, + dependencies : [dep_udev, dep_valgrind, dep_rt, dep_m], + include_directories : inc_drm, + version : '2.4.0', + install : true, +) + +ext_libdrm = declare_dependency( + link_with : libdrm, + include_directories : inc_drm, +) + +install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h') +install_headers( + 'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h', + 'include/drm/drm_sarea.h', 'include/drm/i915_drm.h', + 'include/drm/mach64_drm.h', 'include/drm/mga_drm.h', + 'include/drm/nouveau_drm.h', 'include/drm/qxl_drm.h', + 'include/drm/r128_drm.h', 'include/drm/radeon_drm.h', + 'include/drm/amdgpu_drm.h', 'include/drm/savage_drm.h', + 'include/drm/sis_drm.h', 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h', + 'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h', + subdir : 'libdrm', +) +if with_vmwgfx + install_headers('include/drm/vmwgfx_drm.h', subdir : 'libdrm') +endif + +pkg.generate( + name : 'libdrm', + libraries : libdrm, + subdirs : ['.', 'libdrm'], + version : meson.project_version(), + description : 'Userspace interface to kernel DRM services', +) + +if with_libkms + subdir('libkms') +endif +if with_intel + subdir('intel') +endif +if with_nouveau + subdir('nouveau') +endif +if with_radeon + subdir('radeon') +endif +if with_amdgpu + subdir('amdgpu') +endif +if with_omap + subdir('omap') +endif +if with_exynos + subdir('exynos') +endif +if with_freedreno + subdir('freedreno') +endif +if with_tegra + subdir('tegra') +endif +if with_vc4 + subdir('vc4') +endif +if with_etnaviv + subdir('etnaviv') +endif +if with_man_pages + subdir('man') +endif +subdir('data') +subdir('tests') diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..8af33f1 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,143 @@ +# 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'], + description : 'Build libkms mm abstraction library.', +) +option( + 'intel', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for Intel's KMS API.''', +) +option( + 'radeon', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for radeons's KMS API.''', +) +option( + 'amdgpu', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for amdgpu's KMS API.''', +) +option( + 'nouveau', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for nouveau's KMS API.''', +) +option( + 'vmwgfx', + type : 'combo', + value : 'true', + choices : ['true', 'false', 'auto'], + description : '''Enable support for vmgfx's KMS API.''', +) +option( + 'omap', + type : 'combo', + value : 'false', + choices : ['true', 'false', 'auto'], + description : '''Enable support for OMAP's experimental KMS API.''', +) +option( + 'exynos', + type : 'combo', + value : 'false', + choices : ['true', 'false', 'auto'], + description : '''Enable support for EXYNOS's experimental KMS API.''', +) +option( + 'freedreno', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for freedreno's KMS API.''', +) +option( + 'tegra', + type : 'combo', + value : 'false', + choices : ['true', 'false', 'auto'], + description : '''Enable support for Tegra's experimental KMS API.''', +) +option( + 'vc4', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : '''Enable support for vc4's KMS API.''', +) +option( + 'etnaviv', + type : 'combo', + value : 'false', + choices : ['true', 'false', 'auto'], + description : '''Enable support for etnaviv's experimental KMS API.''', +) +option( + 'cairo-tests', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : 'Enable support for Cairo rendering in tests.', +) +option( + 'man-pages', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : 'Enable manpage generation and installation.', +) +option( + 'valgrind', + type : 'combo', + value : 'auto', + choices : ['true', 'false', 'auto'], + description : 'Build libdrm with valgrind support.', +) +option( + 'freedreno-kgsl', + type : 'boolean', + value : false, + description : 'Enable support for freedreno to use downstream android kernel API.', +) +option( + 'install-test-programs', + type : 'boolean', + value : false, + description : 'Install test programs.', +) +option( + 'udev', + type : 'boolean', + value : false, + description : 'Enable support for using udev instead of mknod.', +) diff --git a/nouveau/meson.build b/nouveau/meson.build new file mode 100644 index 0000000..bfecf84 --- /dev/null +++ b/nouveau/meson.build @@ -0,0 +1,58 @@ +# Copyright © 2017-2018 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_nouveau = shared_library( + 'drm_nouveau', + [files( 'nouveau.c', 'pushbuf.c', 'bufctx.c', 'abi16.c'), 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..b02166f --- /dev/null +++ b/radeon/meson.build @@ -0,0 +1,63 @@ +# Copyright © 2017-2018 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_radeon = shared_library( + 'drm_radeon', + [ + files( + 'radeon_bo_gem.c', 'radeon_cs_gem.c', 'radeon_cs_space.c', 'radeon_bo.c', + 'radeon_cs.c', 'radeon_surface.c', + ), + 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..99fdd19 --- /dev/null +++ b/tegra/meson.build @@ -0,0 +1,52 @@ +# Copyright © 2017-2018 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('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..4c1237c --- /dev/null +++ b/tests/amdgpu/meson.build @@ -0,0 +1,34 @@ +# Copyright © 2017-2018 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 dep_cunit.found() + amdgpu_test = executable( + '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', + ), + dependencies : [dep_cunit, dep_threads], + include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')], + link_with : [libdrm, libdrm_amdgpu], + install : with_install_tests, + ) +endif diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build new file mode 100644 index 0000000..8b4a3cf --- /dev/null +++ b/tests/etnaviv/meson.build @@ -0,0 +1,45 @@ +# Copyright © 2017-2018 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 = executable( + 'etnaviv_2d_test', + files('etnaviv_2d_test.c', 'write_bmp.c'), + 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..1f7f724 --- /dev/null +++ b/tests/kms/meson.build @@ -0,0 +1,49 @@ +# Copyright © 2017-2018 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 = static_library( + 'kms-test', + files( + 'libkms-test-crtc.c', 'libkms-test-device.c', 'libkms-test-framebuffer.c', + 'libkms-test-plane.c', 'libkms-test-screen.c', + ), + 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-planes', + 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..a47d495 --- /dev/null +++ b/tests/kmstest/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. + +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..fdf950b --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,86 @@ +# Copyright © 2017-2018 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('modetest') +subdir('vbltest') +if with_libkms + subdir('kmstest') +endif +if with_radeon + subdir('radeon') +endif +if with_amdgpu + 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/modetest/meson.build b/tests/modetest/meson.build new file mode 100644 index 0000000..2a08184 --- /dev/null +++ b/tests/modetest/meson.build @@ -0,0 +1,29 @@ +# Copyright © 2018 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. + +modetest = executable( + 'modetest', + files('buffers.c', 'cursor.c', 'modetest.c'), + c_args : [warn_c_args, '-Wno-pointer-arith'], + include_directories : [inc_root, inc_tests, inc_drm], + dependencies : [dep_threads, dep_cairo], + link_with : [libdrm, libutil], + 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..22d7473 --- /dev/null +++ b/tests/proptest/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. + +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..9e4f916 --- /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', '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..7fa1a4b --- /dev/null +++ b/tests/util/meson.build @@ -0,0 +1,28 @@ +# Copyright © 2017-2018 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. + + +libutil = static_library( + 'util', + [files('format.c', 'kms.c', 'pattern.c'), 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..ae52ab8 --- /dev/null +++ b/tests/vbltest/meson.build @@ -0,0 +1,28 @@ +# Copyright © 2017-2018 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', +)
This patch adds a complete meson build system, including tests and install. It has the necessary hooks to allow it be used as a subproject for other meson based builds such as mesa. Signed-off-by: Dylan Baker <dylan.c.baker@intel.com> Reviewed-and-tested-by: Igor Gnatenko <i.gnatenko.brain@gmail.com> --- .editorconfig | 4 +- amdgpu/.editorconfig | 4 +- amdgpu/meson.build | 65 +++++++- data/meson.build | 27 +++- etnaviv/meson.build | 59 ++++++- exynos/meson.build | 53 +++++- freedreno/meson.build | 76 ++++++++- intel/meson.build | 105 +++++++++++- libkms/meson.build | 74 ++++++++- man/meson.build | 67 +++++++- meson.build | 364 +++++++++++++++++++++++++++++++++++++- meson_options.txt | 143 +++++++++++++++- nouveau/meson.build | 58 ++++++- omap/meson.build | 53 +++++- radeon/meson.build | 63 ++++++- tegra/meson.build | 52 +++++- tests/amdgpu/meson.build | 34 +++- tests/etnaviv/meson.build | 45 +++++- tests/exynos/meson.build | 54 +++++- tests/kms/meson.build | 49 +++++- tests/kmstest/meson.build | 30 +++- tests/meson.build | 86 +++++++++- tests/modeprint/meson.build | 29 +++- tests/modetest/meson.build | 29 +++- tests/nouveau/meson.build | 30 +++- tests/proptest/meson.build | 28 +++- tests/radeon/meson.build | 27 +++- tests/tegra/meson.build | 27 +++- tests/util/meson.build | 28 +++- tests/vbltest/meson.build | 28 +++- vc4/meson.build | 28 +++- 31 files changed, 1819 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/modetest/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