1local function havedriver(name)
2 local enabled = config.video_drivers and config.video_drivers[name]
3 return '-D HAVE_'..name:upper()..'='..(enabled and '1' or '0')
4end
5
6cflags{
7 '-include $dir/config.h',
8 havedriver('intel'),
9 havedriver('nouveau'),
10 havedriver('amdgpu'),
11 '-I $dir',
12 '-I $outdir',
13 '-I $srcdir',
14 '-I $srcdir/include/drm',
15 '-isystem $builddir/pkg/linux-headers/include',
16}
17
18pkg.hdrs = {
19 copy('$outdir/include', '$srcdir', {'xf86drm.h', 'xf86drmMode.h'}),
20 copy('$outdir/include', '$srcdir/amdgpu', {'amdgpu.h'}),
21 copy('$outdir/include', '$srcdir/include/drm', {
22 'drm.h',
23 'drm_fourcc.h',
24 'drm_mode.h',
25 'drm_sarea.h',
26 'i915_drm.h',
27 'amdgpu_drm.h',
28 }),
29}
30
31pkg.deps = {
32 '$outdir/generated_static_table_fourcc.h',
33 'pkg/linux-headers/headers',
34}
35
36rule('fourcc', 'lua $dir/fourcc.lua <$in >$out')
37build('fourcc', '$outdir/generated_static_table_fourcc.h', {'$srcdir/include/drm/drm_fourcc.h', '|', '$dir/fourcc.lua'})
38
39lib('libdrm.a', {
40 'xf86drm.c',
41 'xf86drmHash.c',
42 'xf86drmRandom.c',
43 'xf86drmSL.c',
44 'xf86drmMode.c',
45})
46
47if config.video_drivers and config.video_drivers['intel'] then
48 cflags{'-isystem $builddir/pkg/libpciaccess/include'}
49 table.insert(pkg.deps, 'pkg/libpciaccess/headers')
50 lib('libdrm_intel.a', [[
51 intel/(
52 intel_bufmgr.c
53 intel_bufmgr_fake.c
54 intel_bufmgr_gem.c
55 intel_decode.c
56 mm.c
57 )
58 $builddir/pkg/libpciaccess/libpciaccess.a
59 ]])
60end
61
62if config.video_drivers and config.video_drivers['nouveau'] then
63 lib('libdrm_nouveau.a', [[
64 nouveau/(
65 nouveau.c
66 pushbuf.c
67 bufctx.c
68 abi16.c
69 )
70 ]])
71end
72
73if config.video_drivers and config.video_drivers['amdgpu'] then
74 cflags{string.format([[-D 'AMDGPU_ASIC_ID_TABLE="%s/share/libdrm/amdgpu.ids"']], config.prefix)}
75 lib('libdrm_amdgpu.a', [[
76 amdgpu/(
77 amdgpu_asic_id.c
78 amdgpu_bo.c
79 amdgpu_cs.c
80 amdgpu_device.c
81 amdgpu_gpu_info.c
82 amdgpu_vamgr.c
83 amdgpu_vm.c
84 handle_table.c
85 amdgpu_userq.c
86 )
87 ]])
88 file('share/libdrm/amdgpu.ids', '644', '$srcdir/data/amdgpu.ids')
89end
90
91fetch 'git'