From patchwork Thu Mar 16 21:25:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dylan Baker X-Patchwork-Id: 9629343 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id EBE7B60132 for ; Thu, 16 Mar 2017 21:26:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D49D52868D for ; Thu, 16 Mar 2017 21:26:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C746228691; Thu, 16 Mar 2017 21:26:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id CBE1A2868D for ; Thu, 16 Mar 2017 21:25:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2E8666EBFC; Thu, 16 Mar 2017 21:25:53 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by gabe.freedesktop.org (Postfix) with ESMTPS id 55FE46EBF1; Thu, 16 Mar 2017 21:25:51 +0000 (UTC) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 2DE5120B63; Thu, 16 Mar 2017 17:25:50 -0400 (EDT) Received: from frontend2 ([10.202.2.161]) by compute3.internal (MEProxy); Thu, 16 Mar 2017 17:25:50 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=pnwbakers.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :in-reply-to:message-id:mime-version:references:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= mesmtp; bh=uepQcSoUeKVVB+/VH+UuohsMOZk=; b=UuR8tIAXRp1Hi7sH3/Tyy yR4uRmzMgd19V2vtPlEV0ycQeQ8Frgvvxa9fIct6JASgU/nIQ27d6koNebjgj9cM kegMbleLpmX9x21OCQ4czgxu/BwIG8ic3yMaQEOwda3jqUFKSfuy7InxsG4TAhQj fYDB0QJuoI8rHTOU7HsQGY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:in-reply-to:message-id:mime-version :references:references:subject:to:x-me-sender:x-me-sender :x-sasl-enc:x-sasl-enc; s=fm1; bh=uepQcSoUeKVVB+/VH+UuohsMOZk=; b= cF4hOMEF4g9RyRbfcwyTIvsA+CW2DX0Avp6BH83sATW1KCPFBGzY7R/6BxO5HuSJ byYVeqeYdiwG/qWd9Nqzj9fc/j2KyD99FwuKDTFZtT6nQzijhUHqpUQA8Ro4JZsZ ICY+B5DonlKSoINhlz96GaIShwVolRu2lNcgCrA4QYDlbspQycm8bC6mRMUQRkeW D9zm7KtVLvt4kJS6D+/dm8+3BdrjTrBBzR0uRSvK6Xu3sjxyhLbmwi8t8Ta7BYFt F+7oXFSLR/1nOd12qLYsa7/xA0cLn7NuNJveMSLtPEk+gr6ppKPzaQqEuVIQK6Tc wrsodWiJ8b+ASGDip62Xzw== X-ME-Sender: X-Sasl-enc: n0ch7eK2Iq59zL1CzDatU/Bni24PXaOpaFeaJm3PXN6e 1489699548 Received: from localhost (jfdmzpr05-ext.jf.intel.com [134.134.139.74]) by mail.messagingengine.com (Postfix) with ESMTPA id A3FC0241D8; Thu, 16 Mar 2017 17:25:48 -0400 (EDT) From: Dylan Baker To: dri-devel@lists.freedesktop.org Subject: [RFC libdrm 1/2] Port build system to meson Date: Thu, 16 Mar 2017 14:25:36 -0700 Message-Id: <5292e55a1b500ffe5eacea073cd9a81e8cec64e1.1489699291.git-series.dylan@pnwbakers.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: References: MIME-Version: 1.0 In-Reply-To: References: Cc: mesa-dev@lists.freedesktop.org, Dylan Baker X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP This is a bit of a tech demo, a bit of a serious port to meson. This provides almost all of the build system, except for the ability to install the tests, it doesn't add -lrt for the clock (it's been in core glibc for some time), has basically no comments, and hasn't been tested on any platform except Linux (I have cross compiled for arm). It also relies on unreviewed, unmerged patches to meson for valgrind support (but will work fine without the patch and without valgrind) What's not done: - the install tests flag isn't implemented - some of the extra data installs aren't implemented - valgrind is set to "no" rather than "auto". To make valgrind work correctly you need a patch that's neither reviewed nor landed in meson, or to implement a hack that might make cross compiling difficult. --- .editorconfig | 4 +- README | 21 +-- amdgpu/meson.build | 57 +++++++- etnaviv/meson.build | 56 +++++++- exynos/meson.build | 52 +++++++- freedreno/meson.build | 72 +++++++++- include/drm/meson.build | 48 ++++++- intel/intel_bufmgr_gem.c | 8 +- intel/meson.build | 55 +++++++- libkms/meson.build | 71 +++++++++- man/meson.build | 119 +++++++++++++++- meson.build | 288 +++++++++++++++++++++++++++++++++++++- meson_config.h.in | 24 +++- meson_options.txt | 16 ++- nouveau/meson.build | 63 ++++++++- omap/meson.build | 48 ++++++- radeon/meson.build | 62 ++++++++- tegra/meson.build | 50 ++++++- tests/amdgpu/meson.build | 30 ++++- tests/etnaviv/meson.build | 49 ++++++- tests/exynos/meson.build | 43 ++++++- tests/kms/meson.build | 46 ++++++- tests/kmstest/meson.build | 28 ++++- tests/meson.build | 87 +++++++++++- tests/modeprint/meson.build | 27 +++- tests/modetest/meson.build | 27 +++- tests/nouveau/meson.build | 30 ++++- tests/proptest/meson.build | 27 +++- tests/radeon/meson.build | 27 +++- tests/tegra/meson.build | 27 +++- tests/util/meson.build | 35 ++++- tests/vbltest/meson.build | 27 +++- vc4/meson.build | 28 ++++- xf86atomic.h | 4 +- 34 files changed, 1637 insertions(+), 19 deletions(-) create mode 100644 amdgpu/meson.build create mode 100644 etnaviv/meson.build create mode 100644 exynos/meson.build create mode 100644 freedreno/meson.build create mode 100644 include/drm/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_config.h.in 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..ffc477f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,3 +17,7 @@ indent_style = tab [*.m4] indent_style = space indent_size = 2 + +[meson.build] +indent_style = space +indent_size = 2 diff --git a/README b/README index 26cab9d..b567d7e 100644 --- a/README +++ b/README @@ -15,27 +15,22 @@ with an older kernel. Compiling --------- -libdrm is a standard autotools package and follows the normal -configure, build and install steps. The first step is to configure -the package, which is done by running the configure shell script: +libdrm is compiled using meson and ninja. The first step for building for a +tar-ball or from git is to configure, and set a build directory: - ./configure + meson build -By default, libdrm will install into the /usr/local/ prefix. If you -want to install this DRM to replace your system copy, pass ---prefix=/usr and --exec-prefix=/ to configure. If you are building -libdrm from a git checkout, you first need to run the autogen.sh -script. You can pass any options to autogen.sh that you would other -wise pass to configure, or you can just re-run configure with the -options you need once autogen.sh finishes. +By default, libdrm will install into the /usr/local/ prefix. If you +want to install this DRM to replace your system copy, pass +--prefix=/usr to meson, or -Dprefix=/usr to mesonconf. Next step is to build libdrm: - make + ninja -C build and once make finishes successfully, install the package using - make install + ninja install If you are installing into a system location, you will need to be root to perform the install step. diff --git a/amdgpu/meson.build b/amdgpu/meson.build new file mode 100644 index 0000000..71054df --- /dev/null +++ b/amdgpu/meson.build @@ -0,0 +1,57 @@ +# 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. + +amdgpu_files = files( + 'amdgpu_asic_id.h', + 'amdgpu_bo.c', + 'amdgpu_cs.c', + 'amdgpu_device.c', + 'amdgpu_gpu_info.c', + 'amdgpu_internal.h', + 'amdgpu_vamgr.c', + 'util_hash.c', + 'util_hash.h', + 'util_hash_table.c', + 'util_hash_table.h', +) + +libdrm_amdgpu = shared_library( + 'drm_amdgpu', + amdgpu_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : pthreadstubs_dep, + version : '1.0.0', + install : true, +) + +install_headers('amdgpu.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_amdgpu', + description : 'Userspace interface to kernel DRM services for amdgpu', + version : meson.project_version(), + subdirs : ['', 'libdrm'], + libraries : [libdrm_amdgpu], + requires_private : 'libdrm', +) + +test('amdgpu-symbol-check', find_program('amdgpu-symbol-check')) diff --git a/etnaviv/meson.build b/etnaviv/meson.build new file mode 100644 index 0000000..c57152f --- /dev/null +++ b/etnaviv/meson.build @@ -0,0 +1,56 @@ +# 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. + +etnaviv_files = files( + 'etnaviv_device.c', + 'etnaviv_gpu.c', + 'etnaviv_bo.c', + 'etnaviv_bo_cache.c', + 'etnaviv_pipe.c', + 'etnaviv_cmd_stream.c', + 'etnaviv_drm.h', + 'etnaviv_priv.h', +) + +etnaviv_include = include_directories('.') + +libdrm_etnaviv = shared_library( + 'drm_etnaviv', + etnaviv_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : [pthreadstubs_dep, valgrind_dep], + version : '1.0.0', + install : true, +) + +install_headers('etnaviv_drmif.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_etnaviv', + description : 'Userspace interface to etnaviv kernel DRM services', + version : meson.project_version(), + subdirs : ['', 'libdrm'], + libraries : [libdrm_etnaviv], + requires_private : 'libdrm', +) + +test('etnaviv-symbol-check', find_program('etnaviv-symbol-check')) diff --git a/exynos/meson.build b/exynos/meson.build new file mode 100644 index 0000000..5adc12e --- /dev/null +++ b/exynos/meson.build @@ -0,0 +1,52 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +exynos_files = files( + 'exynos_drm.c', + 'exynos_fimg2d.c', + 'fimg2d_reg.h', +) + +libdrm_exynos = shared_library( + 'drm_exynos', + exynos_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : [pthreadstubs_dep, valgrind_dep], + version : '1.0.0', + install : true, +) + +exynos_include = include_directories('.') + +install_headers('exynos_drm.h', 'exynos_fimg2d.h', subdir : 'exynos') +install_headers('exynos_drmif.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_exynos', + description : 'Userspace interface to exynos kernel DRM services', + version : '0.7', + subdirs : ['', 'libdrm', 'exynos'], + libraries : [libdrm_exynos], + requires_private : 'libdrm', +) + +test('exynos-symbol-check', find_program('exynos-symbol-check')) diff --git a/freedreno/meson.build b/freedreno/meson.build new file mode 100644 index 0000000..ac02a75 --- /dev/null +++ b/freedreno/meson.build @@ -0,0 +1,72 @@ +# 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. + +freedreno_files = files( + 'freedreno_device.c', + 'freedreno_pipe.c', + 'freedreno_priv.h', + 'freedreno_ringbuffer.c', + 'freedreno_bo.c', + 'freedreno_bo_cache.c', + 'msm/msm_bo.c', + 'msm/msm_device.c', + 'msm/msm_drm.h', + 'msm/msm_pipe.c', + 'msm/msm_priv.h', + 'msm/msm_ringbuffer.c', +) + +if get_option('freedreno-kgsl') == 'yes' + freedreno_kgsl_files = files( + 'kgsl/kgsl_bo.c', + 'kgsl/kgsl_device.c', + 'kgsl/kgsl_drm.h', + 'kgsl/kgsl_pipe.c', + 'kgsl/kgsl_priv.h', + 'kgsl/kgsl_ringbuffer.c', + 'kgsl/msm_kgsl.h', + ) +else + freedreno_kgsl_files = [] +endif + +libdrm_freedreno = shared_library( + 'drm_freedreno', + [freedreno_files, freedreno_kgsl_files], + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : pthreadstubs_dep, + version : '1.0.0', + install : true, +) + +install_headers('freedreno_drmif.h', 'freedreno_ringbuffer.h', subdir : 'freedreno') + +pkg.generate( + name : 'libdrm_freedreno', + description : 'Userspace interface to freedreno kernel DRM services', + version : meson.project_version(), + subdirs : ['', 'libdrm', 'freedreno'], + libraries : [libdrm_freedreno], + requires_private : 'libdrm', +) + +test('freedreno-symbol-check', find_program('freedreno-symbol-check')) diff --git a/include/drm/meson.build b/include/drm/meson.build new file mode 100644 index 0000000..feaf9c8 --- /dev/null +++ b/include/drm/meson.build @@ -0,0 +1,48 @@ +# 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( + 'drm.h', + 'drm_fourcc.h', + 'drm_mode.h', + 'drm_sarea.h', + 'i915_drm.h', + 'mach64_drm.h', + 'mga_drm.h', + 'nouveau_drm.h', + 'qxl_drm.h', + 'r128_drm.h', + 'radeon_drm.h', + 'amdgpu_drm.h', + 'savage_drm.h', + 'sis_drm.h', + 'tegra_drm.h', + 'vc4_drm.h', + 'via_drm.h', + 'virtgpu_drm.h', + subdir : 'libdrm', +) + +if conf_data.get('HAVE_VMWGFX') + install_headers( + 'vmwgfx_drm.h', + subdir : 'libdrm', + ) +endif diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c index e260f2d..2ba72bb 100644 --- a/intel/intel_bufmgr_gem.c +++ b/intel/intel_bufmgr_gem.c @@ -1,7 +1,7 @@ /************************************************************************** * - * Copyright © 2007 Red Hat Inc. - * Copyright © 2007-2012 Intel Corporation + * Copyright © 2007 Red Hat Inc. + * Copyright © 2007-2012 Intel Corporation * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA * All Rights Reserved. * @@ -28,7 +28,7 @@ * **************************************************************************/ /* - * Authors: Thomas Hellström + * Authors: Thomas Hellström * Keith Whitwell * Eric Anholt * Dave Airlie @@ -1217,7 +1217,7 @@ drm_intel_gem_bo_free(drm_intel_bo *bo) static void drm_intel_gem_bo_mark_mmaps_incoherent(drm_intel_bo *bo) { -#if HAVE_VALGRIND +#ifdef HAVE_VALGRIND drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; if (bo_gem->mem_virtual) diff --git a/intel/meson.build b/intel/meson.build new file mode 100644 index 0000000..6f455bb --- /dev/null +++ b/intel/meson.build @@ -0,0 +1,55 @@ +# 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_intel_files = files( + 'intel_bufmgr.c', + 'intel_bufmgr_priv.h', + 'intel_bufmgr_fake.c', + 'intel_bufmgr_gem.c', + 'intel_decode.c', + 'intel_chipset.h', + 'mm.c', + 'mm.h', + 'uthash.h', +) + +libdrm_intel = shared_library( + 'drm_intel', + libdrm_intel_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : [pthreadstubs_dep, pciaccess_dep, valgrind_dep], + version : '1.0.0', + install : true, +) + +install_headers('intel_bufmgr.h', 'intel_aub.h', 'intel_debug.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_intel', + description : 'Userspace interface to intel kernel DRM services', + version : meson.project_version(), + requires : 'libdrm', + subdirs : ['', 'libdrm'], + libraries : [libdrm_intel], +) + +test('intel-symbol-check', find_program('intel-symbol-check')) diff --git a/libkms/meson.build b/libkms/meson.build new file mode 100644 index 0000000..55e726d --- /dev/null +++ b/libkms/meson.build @@ -0,0 +1,71 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +libkms_files = files( + 'internal.h', + 'linux.c', + 'dumb.c', + 'api.c', +) + +libkms_include = include_directories('.') + +if conf_data.get('HAVE_VMWGFX', false) + libkms_files += files('vmwgfx.c') +endif + +if conf_data.get('HAVE_INTEL', false) + libkms_files += files('intel.c') +endif + +if conf_data.get('HAVE_NOUVEAU', false) + libkms_files += files('nouveau.c') +endif + +if conf_data.get('HAVE_RADEON', false) + libkms_files += files('radeon.c') +endif + +if conf_data.get('HAVE_EXYNOS', false) + libkms_files += files('exynos.c') +endif + +libkms = shared_library( + 'kms', + libkms_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include, include_directories('../exynos')], + link_with : libdrm, + version : '1.0.0', + install : true, +) + +install_headers('libkms.h', subdir : 'libkms') + +pkg.generate( + name : 'libkms', + description : 'Library that abstracts away the different mm interfaces for kernel drivers', + version : '1.0.0', + requires_private : 'libdrm', + subdirs : ['libkms'], + libraries : [libkms], +) + +test('kms-symbol-check', find_program('kms-symbol-check')) diff --git a/man/meson.build b/man/meson.build new file mode 100644 index 0000000..5108456 --- /dev/null +++ b/man/meson.build @@ -0,0 +1,119 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +xsltproc = find_program('xsltproc') +sed = find_program('sed') + +stylesheet_url = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' +ret = run_command(xsltproc, '--nonet', stylesheet_url) +if ret.returncode() != 0 + error('Cannot build man pages without docbook-xml') +endif + +xsltproc_args = [xsltproc, '-o', '@OUTPUT@', + '--stringparam', 'man.authors.section.enabled', '0', + '--stringparam', 'man.copyright.section.enabled', '0', + '--stringparam', 'funcsynopsis.style', 'ansi', + '--stringparam', 'man.output.quietly', '1', + '--noout', stylesheet_url, '@INPUT@'] + +# TODO: https://github.com/mesonbuild/meson/issues/1364 +# This issue is about creating reusable custom_target templates, which would +# simplify the following custom_targets considerably. +drm_avail_man = custom_target( + 'drmAvailable.3', + input : 'drmAvailable.xml', + output : '@BASENAME@.3', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man3', +) + +drm_handleevent_man = custom_target( + 'drmHandleEvent.3', + input : 'drmHandleEvent.xml', + output : '@BASENAME@.3', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man3', +) + +drm_modegetresources_man = custom_target( + 'drmModeGetResources.3', + input : 'drmModeGetResources.xml', + output : '@BASENAME@.3', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man3', +) + +drm_man = custom_target( + 'drm.7', + input : 'drm.xml', + output : '@BASENAME@.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) + +drm_kms_man = custom_target( + 'kms.7', + input : 'drm-kms.xml', + output : '@BASENAME@.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) + +drm_memory_man = custom_target( + 'memory.7', + input : 'drm-memory.xml', + output : '@BASENAME@.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) + +drm_mm = custom_target( + 'mm.7', + input : 'drm-memory.xml', + output : 'drm-mm.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) + +drm_gem = custom_target( + 'gem.7', + input : 'drm-memory.xml', + output : 'drm-gem.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) + +drm_gem = custom_target( + 'ttm.7', + input : 'drm-memory.xml', + output : 'drm-ttm.7', + command : xsltproc_args, + install : true, + install_dir : 'usr/share/man/man7', +) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..f8a75a0 --- /dev/null +++ b/meson.build @@ -0,0 +1,288 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +project('libdrm', 'c', version : '2.4.76-dev', default_options : ['-std=c99']) + +pkg = import('pkgconfig') + +conf_data = configuration_data() + +global_warn_flags = [] + +atomic_dep = [] +cunit_dep = [] +pciaccess_dep = [] +valgrind_dep = [] +pthreadstubs_dep = dependency('pthread-stubs') # TODO: is this always required? +cairo_dep = dependency('cairo', required : false) +if cairo_dep.found() + conf_data.set('HAVE_CAIRO', true) +endif +thread_dep = dependency('threads') + +system = host_machine.system() +if system.startswith('linux') + add_project_arguments('-D_GNU_SOURCE', language : 'c') +endif + +cc = meson.get_compiler('c') + +# TODO: resolve whether we need -lrt +cc.find_library('m') +if cc.has_header('sys/sysctl.h') + conf_data.set('HAVE_SYS_SYSCTL_H', true) +endif +if cc.has_header('sys/select.h') + conf_data.set('HAVE_SYS_SELECT_H', true) +endif +if cc.has_header('alloca.h') + conf_data.set('HAVE_ALLOCA_H', true) +endif +if cc.has_function('major', prefix : '#include ') + conf_data.set('MAJOR_IN_SYSMACROS', true) +elif cc.has_function('major', prefix : '#include ') + conf_data.set('MAJOR_IN_MKDEV', true) +endif +if cc.has_function('open_memstream') + conf_data.set('HAVE_OPEN_MEMSTREAM', true) +endif + +if cc.compiles('''int foo_hidden(void) __attribute__((visibility("hidden")));''') + conf_data.set('HAVE_ATTRIBUTE_VISIBILITY', true) +endif + +# TODO: copy comment from configure.ac +global_warn_flag_opts = [ + '-Wall', '-Wextra', '-Wsign-compare', + '-Werror-implicit-function-declaration', '-Wpointer-arith', + '-Wwrite-strings', '-Wstrict-prototypes', '-Wmissing-prototypes', + '-Wmissing-format-attribute', '-Wnested-externs', '-Wpacked', + '-Wswitch-enum', '-Wmissing-format-attribute', '-Wstrict-aliasing=2', + '-Winit-self', '-Wdeclaration-after-statement', '-Wold-style-definition', + '-Wno-unused-parameter', '-Wno-attributes', '-Wno-long-long', '-Winline', + '-Wshadow', '-Wno-missing-field-initializers', +] +foreach f : global_warn_flag_opts + if cc.has_argument(f) + global_warn_flags += f + endif +endforeach + +# Check for atomic intrinsics +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); } + ''') + conf_data.set('HAVE_LIBDRM_ATOMIC_PRIMITIVES', true) +elif (system.startswith('solaris') or system.startswith('netbsd') + and cc.has_function('atomic_cas_uint')) + if not cc.has_header('sys/atomic.h') + error('wat?') + endif +else + atomic_dep = dependency('atomic_ops') + conf_data.set('HAVE_LIB_ATOMIC_OPS', true) +endif + +if get_option('udev') == 'yes' + dependency('udev') + conf_data.set('UDEV', true) +endif + +cpu = host_machine.cpu_family() +if get_option('intel') != 'no' + if cpu == 'x86' or cpu == 'x86_64' + pciaccess_dep = dependency('pciaccess', version : '>=0.10') + conf_data.set('HAVE_INTEL', true) + endif +endif +if get_option('radeon') != 'no' + conf_data.set('HAVE_RADEON', true) +endif +if get_option('amdgpu') != 'no' + conf_data.set('HAVE_AMDGPU', true) + cunit_dep = dependency('cunit', version : '>=2.1', required : false) + if cunit_dep.found() + conf_data.set('HAVE_CUNIT', true) + endif +endif +if get_option('nouveau') != 'no' + conf_data.set('HAVE_NOUVEAU', true) + dl_lib = cc.find_library('dl') + if dl_lib.found() + dl_dep = declare_dependency(link_args : '-ldl') + else + error('nouveau tests require dlopen') + endif +endif +if get_option('freedreno') != 'no' + if cpu == 'arm' + conf_data.set('HAVE_FREEDRENO', true) + if get_option('freedreno-kgsl') == 'yes' + conf_data.set('HAVE_FREEDRENO_KGSL', true) + endif + endif +endif +if get_option('vc4') != 'no' + if cpu == 'arm' + conf_data.set('HAVE_VC4', true) + endif +endif +if get_option('vmwgfx') == 'yes' + conf_data.set('HAVE_VMWGFX', true) +endif +if get_option('omap-experimental-api') == 'yes' + if cpu == 'arm' + conf_data.set('HAVE_OMAP', true) + endif +endif +if get_option('exynos-experimental-api') == 'yes' + if cpu == 'arm' + conf_data.set('HAVE_EXYNOS', true) + endif +endif +if get_option('tegra-experimental-api') == 'yes' + if cpu == 'arm' + conf_data.set('HAVE_TEGRA', true) + endif +endif +if get_option('etnaviv-experimental-api') == 'yes' + if cpu == 'arm' + conf_data.set('HAVE_ETNAVIV', true) + endif +endif + +if get_option('libkms') == 'auto' + if (system.startswith('linux') or + system.startswith('freebsd') or + system.startswith('dragonfly') or + (system.startswith('kfreebsd') and system.endswith('-gnu'))) + conf_data.set('HAVE_LIBKMS', true) + elif get_option('libkms') == 'no' + conf_data.set('HAVE_LIBKMS', false) + endif +elif get_option('libkms') == 'yes' + conf_data.set('HAVE_LIBKMS', true) +else + conf_data.set('HAVE_LIBKMS', false) +endif + +# TODO: https://github.com/mesonbuild/meson/issues/826 +# This only works with a dev build of meson +if get_option('valgrind') != 'no' + valgrind_dep = dependency( + 'valgrind', + headers_only : true, + required : get_option('valgrind') == 'yes' + ) + if valgrind_dep.found() + conf_data.set('HAVE_VALGRIND', true) + endif +endif + +config_h = configure_file( + input : 'meson_config.h.in', + output : 'config.h', + configuration : conf_data, +) +add_project_arguments('-DHAVE_CONFIG_H', language : 'c') + +libdrm_files = files( + 'xf86drm.c', + 'xf86drmHash.c', + 'xf86drmHash.h', + 'xf86drmRandom.c', + 'xf86drmRandom.h', + 'xf86drmSL.c', + 'xf86drmMode.c', + 'xf86atomic.h', + 'libdrm_macros.h', + 'libdrm_lists.h', + 'util_double_list.h', + 'util_math.h', +) + +drm_include = include_directories('include/drm') +base_include = include_directories('.') + +libdrm = shared_library( + 'drm', + libdrm_files, + include_directories : [base_include, drm_include], + dependencies : valgrind_dep, + c_args : global_warn_flags, + link_args : '-lm', + version : '2.4.0', + install : true, +) + +install_headers( + 'libsync.h', + 'xf86drm.h', + 'xf86drmMode.h', +) + +pkg.generate( + name : 'libdrm', + filebase : 'libdrm', + description : 'Userspace interface to kernel DRM services', + version : meson.project_version(), + libraries : [libdrm], + subdirs : ['', 'libdrm'], +) + +subdir('include/drm') +if conf_data.get('HAVE_LIBKMS', false) + subdir('libkms') +endif +if conf_data.get('HAVE_INTEL', false) + subdir('intel') +endif +if conf_data.get('HAVE_NOUVEAU', false) + subdir('nouveau') +endif +if conf_data.get('HAVE_RADEON', false) + subdir('radeon') +endif +if conf_data.get('HAVE_AMDGPU', false) + subdir('amdgpu') +endif +if conf_data.get('HAVE_OMAP', false) + subdir('omap') +endif +if conf_data.get('HAVE_EXYNOS', false) + subdir('exynos') +endif +if conf_data.get('HAVE_FREEDRENO', false) + subdir('freedreno') +endif +if conf_data.get('HAVE_TEGRA', false) + subdir('tegra') +endif +if conf_data.get('HAVE_VC4', false) + subdir('vc4') +endif +if conf_data.get('HAVE_ETNAVIV', false) + subdir('etnaviv') +endif +subdir('tests') +if get_option('manpages') + subdir('man') +endif diff --git a/meson_config.h.in b/meson_config.h.in new file mode 100644 index 0000000..a45723c --- /dev/null +++ b/meson_config.h.in @@ -0,0 +1,24 @@ +#mesondefine HAVE_LIBDRM_ATOMIC_PRIMITIVES +#mesondefine HAVE_LIB_ATOMIC_OPS +#mesondefine HAVE_INTEL +#mesondefine HAVE_RADEON +#mesondefine HAVE_AMDGPU +#mesondefine HAVE_NOUVEAU +#mesondefine HAVE_FREEDRENO +#mesondefine HAVE_FREEDRENO_KGSL +#mesondefine HAVE_VC4 +#mesondefine HAVE_OMAP +#mesondefine HAVE_EXYNOS +#mesondefine HAVE_TEGRA +#mesondefine HAVE_ETNAVIV +#mesondefine HAVE_LIBKMS +#mesondefine HAVE_SYS_SYSCTL_H +#mesondefine HAVE_SYS_SELECT_H +#mesondefine HAVE_VALGRIND +#mesondefine HAVE_OPEN_MEMSTREAM +#mesondefine HAVE_CAIRO +#mesondefine UDEV +#mesondefine HAVE_ATTRIBUTE_VISIBILITY +#mesondefine HAVE_ALLOCA_H +#mesondefine MAJOR_IN_SYSMACROS +#mesondefine MAJOR_IN_MKDEV diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..d1d7190 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,16 @@ +option('intel', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('radeon', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('amdgpu', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('nouveau', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('vmwgfx', type : 'combo', choices : ['yes', 'no', ], value : 'yes') +option('freedreno', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('freedreno-kgsl', type : 'combo', choices : ['yes', 'no', ], value : 'no') +option('vc4', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('omap-experimental-api', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'no') +option('exynos-experimental-api', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'no') +option('tegra-experimental-api', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'no') +option('etnaviv-experimental-api', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'no') +option('libkms', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto') +option('valgrind', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'no') +option('udev', type : 'combo', choices : ['yes', 'no', ], value : 'no') +option('manpages', type : 'boolean', value : false) diff --git a/nouveau/meson.build b/nouveau/meson.build new file mode 100644 index 0000000..6101b3c --- /dev/null +++ b/nouveau/meson.build @@ -0,0 +1,63 @@ +# 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. + +nouveau_files = files( + 'nouveau.c', + 'pushbuf.c', + 'bufctx.c', + 'abi16.c', + 'private.h', +) + +nouveau_include = include_directories('.') + +libdrm_nouveau = shared_library( + 'drm_nouveau', + nouveau_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : pthreadstubs_dep, + version : '2.0.0', + install : true, +) + +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 : 'nouveau/nvif', +) + +pkg.generate( + name : 'libdrm_nouveau', + description : 'Userspace interface to nouveau kernel DRM services', + version : meson.project_version(), + subdirs : ['', 'libdrm'], + libraries : [libdrm_nouveau], + requires_private : 'libdrm', +) + +test('nouveau-symbol-check', find_program('nouveau-symbol-check')) diff --git a/omap/meson.build b/omap/meson.build new file mode 100644 index 0000000..83f3003 --- /dev/null +++ b/omap/meson.build @@ -0,0 +1,48 @@ +# 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. + +omap_files = files( + 'omap_drm.c', +) + +libdrm_omap = shared_library( + 'drm_omap', + omap_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : [pthreadstubs_dep, valgrind_dep], + version : '1.0.0', + install : true, +) + +install_headers('omap_drm.h', subdir : 'omap') +install_headers('omap_drmif.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_omap', + description : 'Userspace interface to omap kernel DRM services', + version : '0.6', + subdirs : ['', 'libdrm', 'omap'], + libraries : [libdrm_omap], + requires_private : 'libdrm', +) + +test('omap-symbol-check', find_program('omap-symbol-check')) diff --git a/radeon/meson.build b/radeon/meson.build new file mode 100644 index 0000000..b1630fc --- /dev/null +++ b/radeon/meson.build @@ -0,0 +1,62 @@ +# 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_files = files( + 'radeon_bo_gem.c', + 'radeon_cs_gem.c', + 'radeon_cs_space.c', + 'radeon_bo.c', + 'radeon_cs.c', + 'radeon_surface.c', +) + +libdrm_radeon = shared_library( + 'drm_radeon', + radeon_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : pthreadstubs_dep, + version : '1.0.1', + install : true, +) + +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', + description : 'Userspace interface to kernel DRM services for radeon', + version : meson.project_version(), + subdirs : ['', 'libdrm'], + libraries : [libdrm_radeon], + requires_private : 'libdrm', +) + +test('radeon-symbol-check', find_program('radeon-symbol-check')) diff --git a/tegra/meson.build b/tegra/meson.build new file mode 100644 index 0000000..4a90fc1 --- /dev/null +++ b/tegra/meson.build @@ -0,0 +1,50 @@ +# 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. + +tegra_files = files( + 'private.h', + 'tegra.c', +) + +libdrm_tegra = shared_library( + 'drm_tegra', + tegra_files, + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, + dependencies : [pthreadstubs_dep, valgrind_dep], + version : '1.0.0', + install : true, +) + +tegra_include = include_directories('.') + +install_headers('tegra.h', subdir : 'libdrm') + +pkg.generate( + name : 'libdrm_tegra', + description : 'Userspace interface to Tegra kernel DRM services', + version : meson.project_version(), + subdirs : ['', 'libdrm'], + libraries : [libdrm_tegra], + requires_private : 'libdrm', +) + +test('tegra-symbol-check', find_program('tegra-symbol-check')) diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build new file mode 100644 index 0000000..86bd516 --- /dev/null +++ b/tests/amdgpu/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. + +if conf_data.get('HAVE_CUNIT', false) + amdgpu_test = executable( + 'amdgpu_test', + ['amdgpu_test.c', 'amdgpu_test.h', 'basic_tests.c', 'bo_tests.c', + 'cs_tests.c', 'uvd_messages.h', 'vce_tests.c', 'vce_ib.h', 'frame.h'], + include_directories : [base_include, include_directories('../../amdgpu'), drm_include], + dependencies : cunit_dep, + link_with : [libdrm, libdrm_amdgpu], + ) +endif diff --git a/tests/etnaviv/meson.build b/tests/etnaviv/meson.build new file mode 100644 index 0000000..cb75c03 --- /dev/null +++ b/tests/etnaviv/meson.build @@ -0,0 +1,49 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +if conf_data.get('HAVE_LIBKMS', false) + test_etnaviv_2d = executable( + 'etnaviv_2d_test', + ['cmdstream.xml.h', 'etnaviv_2d_test.c', 'state.xml.h', 'state_2d.xml.h', + 'write_bmp.c', 'write_bmp.h'], + c_args : global_warn_flags, + include_directories : [base_include, drm_include, etnaviv_include], + link_with : [libdrm, libdrm_etnaviv], + dependencies : thread_dep + ) +endif + +test_etnaviv_cmd_stream = executable( + 'etnaviv_cmd_stream_test', + 'etnaviv_cmd_stream_test.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include, etnaviv_include], + link_with : [libdrm_etnaviv], + dependencies : thread_dep +) + +test_etnaviv_bo_cache = executable( + 'etnaviv_bo_cache_test', + 'etnaviv_bo_cache_test.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include, etnaviv_include], + link_with : [libdrm, libdrm_etnaviv], + dependencies : thread_dep +) diff --git a/tests/exynos/meson.build b/tests/exynos/meson.build new file mode 100644 index 0000000..b216e71 --- /dev/null +++ b/tests/exynos/meson.build @@ -0,0 +1,43 @@ +# 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. + +test_exynos_fimg2d_perf = executable( + 'exynos_fimg2d_perf', + 'exynos_fim2d_perf.c', + include_directories : [base_include, libkms_include, exynos_include, drm_include], + link_with : [libdrm, libdrm_exynos], +) + +test_exynos_fimg2d_event = executable( + 'exynos_fimg2d_event', + 'exynos_fimg2d_event.c', + include_directories : [base_include, kms_include, exynos_include, drm_include], + link_with : [libdrm, libdrm_exynos], +) + +if conf_data.get('HAVE_LIBKMS', false): + test_exynos_fimg2d_test = executable( + 'exynos_fimg2d_test', + 'exynos_fimg2d_test.c', + dependencies : test_util_dep, + include_directories : [base_include, kms_include, exynos_include, drm_include], + link_with : [libdrm, libdrm_exynos], + ) +endif diff --git a/tests/kms/meson.build b/tests/kms/meson.build new file mode 100644 index 0000000..430bdce --- /dev/null +++ b/tests/kms/meson.build @@ -0,0 +1,46 @@ +# 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. + +kms_test_common_files = files( + 'libkms-test.h', + 'libkms-test-crtc.c', + 'libkms-test-device.c', + 'libkms-test-framebuffer.c', + 'libkms-test-plane.c', + 'libkms-test-screen.c', +) + +test_kms_steal_crtc = executable( + 'kms-steal-crtc', + [kms_test_common_files, 'kms-steal-crtc.c'], + c_args : global_warn_flags, + include_directories : drm_include, + dependencies : test_util_dep, + link_with : libdrm, +) + +test_kms_universal_planes = executable( + 'kms-universal-planes', + [kms_test_common_files, 'kms-universal-planes.c'], + c_args : global_warn_flags, + dependencies : cairo_dep, + include_directories : [base_include, test_include, drm_include], + link_with : libdrm, +) diff --git a/tests/kmstest/meson.build b/tests/kmstest/meson.build new file mode 100644 index 0000000..e4cfa13 --- /dev/null +++ b/tests/kmstest/meson.build @@ -0,0 +1,28 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +kmstest = executable( + 'kmstest', + 'main.c', + include_directories : libkms_include, + dependencies : test_util_dep, + link_with : [libkms, libdrm], + c_args : global_warn_flags, +) diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..1989ae1 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,87 @@ +# 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. + +test_drmsl = executable( + 'drmsl', + 'drmsl.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, +) + +test_hash = executable( + 'hash', + 'hash.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, +) + +test_random = executable( + 'random', + 'random.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, +) + +test_drmdevice = executable( + 'drmdevice', + 'drmdevice.c', + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, +) + +test('drmsl', test_drmsl) +test('hash', test_hash) +# XXX: This test never seems to finish +#test('random', test_random) +test('drmdevice', test_drmdevice) + +test_include = include_directories('.') + +subdir('util') +subdir('kms') +subdir('modeprint') +subdir('proptest') +subdir('modetest') +subdir('vbltest') +if conf_data.get('HAVE_LIBKMS', false) + subdir('kmstest') +endif +if conf_data.get('HAVE_RADEON', false) + subdir('radeon') +endif +if conf_data.get('HAVE_AMDGPU', false) and conf_data.get('HAVE_CUNIT', false) + subdir('amdgpu') +endif +if conf_data.get('have_exynos', false) + subdir('exynos') +endif +if conf_data.get('HAVE_TEGRA', false) + subdir('tegra') +endif +if conf_data.get('HAVE_ETNAVIV', false) + subdir('etnaviv') +endif +if conf_data.get('HAVE_NOUVEAU', false) + subdir('nouveau') +endif diff --git a/tests/modeprint/meson.build b/tests/modeprint/meson.build new file mode 100644 index 0000000..ea8d0de --- /dev/null +++ b/tests/modeprint/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. + +test_modeprint = executable( + 'modeprint', + 'modeprint.c', + include_directories : [drm_include, test_include, base_include], + link_with : libdrm, + c_args : global_warn_flags, +) diff --git a/tests/modetest/meson.build b/tests/modetest/meson.build new file mode 100644 index 0000000..6579a2f --- /dev/null +++ b/tests/modetest/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. + +modetest = executable( + 'modetest', + ['buffers.c', 'buffers.h', 'cursor.c', 'cursor.h', 'modetest.c'], + c_args : [global_warn_flags, '-Wno-pointer-arith'], + dependencies : [test_util_dep, thread_dep], + link_with : libdrm, +) diff --git a/tests/nouveau/meson.build b/tests/nouveau/meson.build new file mode 100644 index 0000000..bd87222 --- /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. + +test_nouveau_threaded = executable( + 'threaded', + 'threaded.c', + dependencies : [thread_dep, dl_dep], + c_args : global_warn_flags, + include_directories : [base_include, drm_include, nouveau_include], + link_with : [libdrm_nouveau, libdrm], +) + +test('nouveau-threaded', test_nouveau_threaded) diff --git a/tests/proptest/meson.build b/tests/proptest/meson.build new file mode 100644 index 0000000..9d20cb9 --- /dev/null +++ b/tests/proptest/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. + +test_proptest = executable( + 'proptest', + 'proptest.c', + c_args : global_warn_flags, + dependencies : [test_util_dep], + link_with : libdrm, +) diff --git a/tests/radeon/meson.build b/tests/radeon/meson.build new file mode 100644 index 0000000..8cc58cf --- /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', + ['rbo.c', 'rbo.h', 'radeon_ttm.c'], + c_args : global_warn_flags, + include_directories : [base_include, drm_include], + link_with : libdrm, +) diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build new file mode 100644 index 0000000..dd3e15a --- /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. + +test_tegra_openclose = executable( + 'openclose', + 'openclose.c', + c_args : global_warn_flags, + include_directories : [base_include, tegra_include, drm_include], + link_with : [libdrm, libdrm_tegra], +) diff --git a/tests/util/meson.build b/tests/util/meson.build new file mode 100644 index 0000000..0c12112 --- /dev/null +++ b/tests/util/meson.build @@ -0,0 +1,35 @@ +# 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. + +test_util_files = files( + 'common.h', + 'format.c', + 'format.h', + 'kms.c', + 'kms.h', + 'pattern.c', + 'pattern.h', +) + +test_util_dep = declare_dependency( + sources : test_util_files, + include_directories : [base_include, drm_include, test_include], + dependencies : cairo_dep, +) diff --git a/tests/vbltest/meson.build b/tests/vbltest/meson.build new file mode 100644 index 0000000..b454b6d --- /dev/null +++ b/tests/vbltest/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. + +vbltest = executable( + 'vbltest', + 'vbltest.c', + c_args : global_warn_flags, + dependencies : test_util_dep, + link_with : libdrm, +) diff --git a/vc4/meson.build b/vc4/meson.build new file mode 100644 index 0000000..a0d9e4f --- /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', + description : 'Userspace interface to vc4 kernel DRM services', + version : meson.project_version(), + requires_private : 'libdrm', +) diff --git a/xf86atomic.h b/xf86atomic.h index 922b37d..57ccdfd 100644 --- a/xf86atomic.h +++ b/xf86atomic.h @@ -38,7 +38,7 @@ #include "config.h" #endif -#if HAVE_LIBDRM_ATOMIC_PRIMITIVES +#ifdef HAVE_LIBDRM_ATOMIC_PRIMITIVES #define HAS_ATOMIC_OPS 1 @@ -57,7 +57,7 @@ typedef struct { #endif -#if HAVE_LIB_ATOMIC_OPS +#ifdef HAVE_LIB_ATOMIC_OPS #include #define HAS_ATOMIC_OPS 1