1# Copyright © 2017 Dylan Baker
2# Copyright © 2018 Intel Corporation
3
4# Permission is hereby granted, free of charge, to any person obtaining a copy
5# of this software and associated documentation files (the "Software"), to deal
6# in the Software without restriction, including without limitation the rights
7# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8# copies of the Software, and to permit persons to whom the Software is
9# furnished to do so, subject to the following conditions:
10
11# The above copyright notice and this permission notice shall be included in
12# all copies or substantial portions of the Software.
13
14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20# SOFTWARE.
21
22# TODO: support non-static targets
23# Static targets are always enabled in autotools (unless you modify
24# configure.ac)
25
26gallium_dri_c_args = [
27  '-DGALLIUM_DDEBUG',
28  '-DGALLIUM_NOOP',
29  '-DGALLIUM_RBUG',
30  '-DGALLIUME_TRACE',
31]
32gallium_dri_ld_args = []
33gallium_dri_link_depends = []
34gallium_dri_drivers = []
35
36if with_ld_version_script
37  gallium_dri_ld_args += ['-Wl,--version-script', join_paths(meson.current_source_dir(), 'dri.sym')]
38  gallium_dri_link_depends += files('dri.sym')
39endif
40if with_ld_dynamic_list
41  gallium_dri_ld_args += ['-Wl,--dynamic-list', join_paths(meson.current_source_dir(), '../dri-vdpau.dyn')]
42  gallium_dri_link_depends += files('../dri-vdpau.dyn')
43endif
44
45libgallium_dri = shared_library(
46  'gallium_dri',
47  files('target.c'),
48  include_directories : [
49    inc_common, inc_util, inc_dri_common, inc_gallium_drivers,
50    inc_gallium_winsys, include_directories('../../state_trackers/dri'),
51  ],
52  c_args : [c_vis_args],
53  cpp_args : [cpp_vis_args],
54  link_args : [ld_args_gc_sections, gallium_dri_ld_args],
55  link_depends : gallium_dri_link_depends,
56  link_with : [
57    libmesa_gallium, libdricommon, libmegadriver_stub, libdri, libgalliumvl,
58    libgallium, libddebug, libnoop, librbug, libtrace, libglapi,
59    libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri,
60  ],
61  dependencies : [
62    dep_selinux, dep_expat, dep_libdrm, dep_llvm, dep_thread,
63    driver_swrast, driver_r300, driver_r600, driver_radeonsi, driver_nouveau,
64    driver_pl111, driver_vc4, driver_vc5, driver_freedreno, driver_etnaviv,
65    driver_imx, driver_i915, driver_svga, driver_virgl, driver_swr,
66  ],
67)
68
69foreach d : [[with_gallium_pl111, 'pl111_dri.so'],
70             [with_gallium_radeonsi, 'radeonsi_dri.so'],
71             [with_gallium_nouveau, 'nouveau_dri.so'],
72             [with_gallium_freedreno, ['msm_dri.so', 'kgsl_dri.so']],
73             [with_gallium_softpipe or with_gallium_swr, 'swrast_dri.so'],
74             [with_gallium_softpipe and with_gallium_drisw_kms, 'kms_swrast_dri.so'],
75             [with_gallium_vc4, 'vc4_dri.so'],
76             [with_gallium_vc5, 'vc5_dri.so'],
77             [with_gallium_etnaviv, 'etnaviv_dri.so'],
78             [with_gallium_imx, 'imx-drm_dri.so'],
79             [with_gallium_i915, 'i915_dri.so'],
80             [with_gallium_r300, 'r300_dri.so'],
81             [with_gallium_r600, 'r600_dri.so'],
82             [with_gallium_svga, 'vmwgfx_dri.so'],
83             [with_gallium_virgl, 'virtio_gpu_dri.so']]
84  if d[0]
85    gallium_dri_drivers += d[1]
86  endif
87endforeach
88
89meson.add_install_script(
90  join_paths(meson.source_root(), 'bin/install_megadrivers.py'),
91  libgallium_dri.full_path(),
92  dri_drivers_path,
93  gallium_dri_drivers,
94)
95