master hovercats/oakiss / pkg / libdrm / gen.lua
 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'