1fe8aea9eSmrgxorg = dependency('xorg-server', required : true)
2fe8aea9eSmrglibdrm = dependency('libdrm', required : true)
3fe8aea9eSmrgpixman = dependency('pixman-1', required : true)
4fe8aea9eSmrg
5fe8aea9eSmrgwith_dri1 = get_option('dri1')
6fe8aea9eSmrgif with_dri1
7fe8aea9eSmrg  dri1 = dependency('xf86driproto', required : true)
8fe8aea9eSmrg  has_dri1 = (cc.has_header('dri.h', dependencies : xorg) and
9fe8aea9eSmrg	      cc.has_header('sarea.h', dependencies : xorg) and
10fe8aea9eSmrg	      cc.has_header('dristruct.h', dependencies : xorg))
11fe8aea9eSmrg
12fe8aea9eSmrg  # Currently 'required' doesn't work for cc.has_header() & co.
13fe8aea9eSmrg  if not has_dri1
14fe8aea9eSmrg    error('DRI1 dependencies not met')
15fe8aea9eSmrg  endif
16fe8aea9eSmrg
17fe8aea9eSmrg  config.set('HAVE_DRI1', 1)
18fe8aea9eSmrgendif
19fe8aea9eSmrg
20fe8aea9eSmrgwith_dri2 = get_option('dri2')
21fe8aea9eSmrgif with_dri2
22fe8aea9eSmrg  dri2 = dependency('dri2proto', version : '>= 2.6', required : true)
23fe8aea9eSmrg
24fe8aea9eSmrg  dri = dependency('dri', required : false)
25fe8aea9eSmrg  if dri.found()
26fe8aea9eSmrg    dridriverdir = dri.get_pkgconfig_variable('dridriverdir')
27fe8aea9eSmrg  else
28fe8aea9eSmrg    dridriverdir = join_paths(get_option('libdir'), 'dri')
29fe8aea9eSmrg  endif
30fe8aea9eSmrg
31fe8aea9eSmrg  config.set('HAVE_DRI2', 1)
32fe8aea9eSmrg  config.set_quoted('DRI_DRIVER_PATH', dridriverdir)
33fe8aea9eSmrgendif
34fe8aea9eSmrg
35fe8aea9eSmrgwith_dri3 = get_option('dri3')
36fe8aea9eSmrgif with_dri3
37fe8aea9eSmrg  dri3 = dependency('dri3proto', required : true)
38fe8aea9eSmrg  has_dri3 = (cc.has_header_symbol('xorg-server.h', 'DRI3',
39fe8aea9eSmrg				   dependencies : xorg) and
40fe8aea9eSmrg	      cc.has_header('misyncstr.h',
41fe8aea9eSmrg			    dependencies : xorg) and
42fe8aea9eSmrg	      cc.has_header('misyncshm.h',
43fe8aea9eSmrg			    dependencies : xorg))
44fe8aea9eSmrg
45fe8aea9eSmrg  # Currently 'required' doesn't work for cc.has_header() & co.
46fe8aea9eSmrg  if not has_dri3
47fe8aea9eSmrg    error('DRI3 dependencies not met')
48fe8aea9eSmrg  endif
49fe8aea9eSmrg
50fe8aea9eSmrg  config.set('HAVE_DRI3', 1)
51fe8aea9eSmrgendif
52fe8aea9eSmrg
53fe8aea9eSmrgdefault_dri = get_option('default-dri')
54fe8aea9eSmrgconfig.set('DEFAULT_DRI_LEVEL', default_dri)
55fe8aea9eSmrg
56fe8aea9eSmrgpresent = dependency('presentproto', required : false)
57fe8aea9eSmrghas_present = (present.found() and
58fe8aea9eSmrg	       cc.has_header('present.h', dependencies : xorg))
59fe8aea9eSmrgif has_present
60fe8aea9eSmrg  config.set('HAVE_PRESENT', 1)
61fe8aea9eSmrgendif
62fe8aea9eSmrg
63fe8aea9eSmrgif get_option('backlight')
64fe8aea9eSmrg  config.set('USE_BACKLIGHT', 1)
65fe8aea9eSmrgendif
66fe8aea9eSmrgwith_backlight_helper = get_option('backlight-helper')
67fe8aea9eSmrgif with_backlight_helper
68fe8aea9eSmrg  config.set('USE_BACKLIGHT_HELPER', 1)
69fe8aea9eSmrgendif
70fe8aea9eSmrg
71fe8aea9eSmrgdebug = get_option('internal-debug')
72fe8aea9eSmrgif debug == 'sync'
73fe8aea9eSmrg  config.set('DEBUG_SYNC', 1)
74fe8aea9eSmrgendif
75fe8aea9eSmrgif debug == 'memory' or debug == 'full'
76fe8aea9eSmrg  config.set('DEBUG_MEMORY', 1)
77fe8aea9eSmrgendif
78fe8aea9eSmrgif debug == 'pixmap' or debug == 'full'
79fe8aea9eSmrg  config.set('DEBUG_PIXMAP', 1)
80fe8aea9eSmrgendif
81fe8aea9eSmrgif debug == 'full'
82fe8aea9eSmrg  config.set('HAS_DEBUG_FULL', 1)
83fe8aea9eSmrgendif
84fe8aea9eSmrg
85fe8aea9eSmrgintel_drv_sources = [
86fe8aea9eSmrg  'backlight.c',
87fe8aea9eSmrg  'fd.c',
88fe8aea9eSmrg  'intel_device.c',
89fe8aea9eSmrg  'intel_options.c',
90fe8aea9eSmrg  'intel_module.c',
91fe8aea9eSmrg]
92fe8aea9eSmrg
93fe8aea9eSmrgintel_drv_deps = [
94fe8aea9eSmrg  dependency('pciaccess', version : '>= 0.10', required : true),
95fe8aea9eSmrg  libdrm,
96fe8aea9eSmrg  xorg,
97fe8aea9eSmrg]
98fe8aea9eSmrg
99fe8aea9eSmrgintel_drv_libs = []
100fe8aea9eSmrg
101fe8aea9eSmrgif with_ums
102fe8aea9eSmrg  subdir('legacy/i810')
103fe8aea9eSmrg  intel_drv_libs += i810
104fe8aea9eSmrgendif
105fe8aea9eSmrg
106fe8aea9eSmrgdefault_accel = get_option('default-accel')
107fe8aea9eSmrg
108fe8aea9eSmrgwith_sna = get_option('sna')
109fe8aea9eSmrgif with_sna
110fe8aea9eSmrg  subdir('sna')
111fe8aea9eSmrg  intel_drv_libs += sna
112fe8aea9eSmrgelif default_accel == 'sna'
113fe8aea9eSmrg  error('SNA not available, so can\'t selected as the default acceleration method')
114fe8aea9eSmrgendif
115fe8aea9eSmrg
116fe8aea9eSmrgwith_uxa = get_option('uxa')
117fe8aea9eSmrgif with_uxa
118fe8aea9eSmrg  subdir('uxa')
119fe8aea9eSmrg  intel_drv_libs += uxa
120fe8aea9eSmrgelif default_accel == 'uxa'
121fe8aea9eSmrg  error('UXA not available, so can\'t selected as the default acceleration method')
122fe8aea9eSmrgendif
123fe8aea9eSmrg
124fe8aea9eSmrgif default_accel == 'sna'
125fe8aea9eSmrg  config.set('DEFAULT_ACCEL_METHOD', 'SNA')
126fe8aea9eSmrgelif default_accel == 'uxa'
127fe8aea9eSmrg  config.set('DEFAULT_ACCEL_METHOD', 'UXA')
128fe8aea9eSmrgelse
129fe8aea9eSmrg  config.set('DEFAULT_ACCEL_METHOD', 'NOACCEL')
130fe8aea9eSmrgendif
131fe8aea9eSmrg
132fe8aea9eSmrgif with_valgrind
133fe8aea9eSmrg  intel_drv_deps += valgrind
134fe8aea9eSmrgendif
135fe8aea9eSmrg
136fe8aea9eSmrgxorg_moduledir = get_option('xorg-module-dir')
137fe8aea9eSmrgmoduledir = ''
138fe8aea9eSmrgforeach dir : xorg_moduledir.split('/')
139fe8aea9eSmrg  if dir == '@libdir@'
140fe8aea9eSmrg    dir = get_option('libdir')
141fe8aea9eSmrg  endif
142fe8aea9eSmrg  moduledir = join_paths(moduledir, dir)
143fe8aea9eSmrgendforeach
144fe8aea9eSmrg
145fe8aea9eSmrgshared_module('intel_drv',
146fe8aea9eSmrg	      sources : intel_drv_sources,
147fe8aea9eSmrg	      dependencies : intel_drv_deps,
148fe8aea9eSmrg	      link_with : intel_drv_libs,
149fe8aea9eSmrg	      c_args : [
150fe8aea9eSmrg		'-DMAJOR_IN_SYSMACROS',
151fe8aea9eSmrg		'-Wno-unused-parameter',
152fe8aea9eSmrg		'-Wno-sign-compare',
153fe8aea9eSmrg		'-Wno-missing-field-initializers',
154fe8aea9eSmrg	      ],
155fe8aea9eSmrg	      name_prefix : '',
156fe8aea9eSmrg	      install_dir : join_paths(moduledir, 'drivers'),
157fe8aea9eSmrg	      install : true)
158