xref: /aosp_15_r20/external/igt-gpu-tools/meson.build (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Workerproject('igt-gpu-tools', 'c',
2*d83cc019SAndroid Build Coastguard Worker	version : '1.24',
3*d83cc019SAndroid Build Coastguard Worker        default_options: [
4*d83cc019SAndroid Build Coastguard Worker          'warning_level=2',
5*d83cc019SAndroid Build Coastguard Worker          'c_std=gnu11',
6*d83cc019SAndroid Build Coastguard Worker          'b_ndebug=false',
7*d83cc019SAndroid Build Coastguard Worker          'buildtype=debugoptimized',
8*d83cc019SAndroid Build Coastguard Worker        ],
9*d83cc019SAndroid Build Coastguard Worker	license : 'MIT',
10*d83cc019SAndroid Build Coastguard Worker	meson_version : '>=0.47.0')
11*d83cc019SAndroid Build Coastguard Worker
12*d83cc019SAndroid Build Coastguard Workerif get_option('b_ndebug') != 'false'
13*d83cc019SAndroid Build Coastguard Worker	error('Building without -Db_ndebug=false is not supported')
14*d83cc019SAndroid Build Coastguard Workerendif
15*d83cc019SAndroid Build Coastguard Worker
16*d83cc019SAndroid Build Coastguard Workercc = meson.get_compiler('c')
17*d83cc019SAndroid Build Coastguard Worker
18*d83cc019SAndroid Build Coastguard Worker# Also make sure that the user doesn't have -DNDEBUG defined in their config
19*d83cc019SAndroid Build Coastguard Workerif not cc.compiles(files('lib/check-ndebug.h'), args: get_option('c_args'))
20*d83cc019SAndroid Build Coastguard Worker	error('Building with NDEBUG defined is not supported')
21*d83cc019SAndroid Build Coastguard Workerendif
22*d83cc019SAndroid Build Coastguard Worker
23*d83cc019SAndroid Build Coastguard Workercc_args = [
24*d83cc019SAndroid Build Coastguard Worker	'-Wbad-function-cast',
25*d83cc019SAndroid Build Coastguard Worker	'-Wdeclaration-after-statement',
26*d83cc019SAndroid Build Coastguard Worker	'-Wformat=2',
27*d83cc019SAndroid Build Coastguard Worker# igt_assert(0) in switch statements triggers a bunch of this.
28*d83cc019SAndroid Build Coastguard Worker	'-Wimplicit-fallthrough=0',
29*d83cc019SAndroid Build Coastguard Worker	'-Wlogical-op',
30*d83cc019SAndroid Build Coastguard Worker	'-Wmissing-declarations',
31*d83cc019SAndroid Build Coastguard Worker	'-Wmissing-format-attribute',
32*d83cc019SAndroid Build Coastguard Worker	'-Wmissing-noreturn',
33*d83cc019SAndroid Build Coastguard Worker	'-Wmissing-prototypes',
34*d83cc019SAndroid Build Coastguard Worker	'-Wnested-externs',
35*d83cc019SAndroid Build Coastguard Worker	'-Wold-style-definition',
36*d83cc019SAndroid Build Coastguard Worker	'-Wpointer-arith',
37*d83cc019SAndroid Build Coastguard Worker	'-Wredundant-decls',
38*d83cc019SAndroid Build Coastguard Worker	'-Wshadow',
39*d83cc019SAndroid Build Coastguard Worker	'-Wstrict-prototypes',
40*d83cc019SAndroid Build Coastguard Worker	'-Wuninitialized',
41*d83cc019SAndroid Build Coastguard Worker	'-Wunused',
42*d83cc019SAndroid Build Coastguard Worker
43*d83cc019SAndroid Build Coastguard Worker	'-Wno-clobbered',
44*d83cc019SAndroid Build Coastguard Worker	'-Wno-maybe-uninitialized',
45*d83cc019SAndroid Build Coastguard Worker	'-Wno-missing-field-initializers',
46*d83cc019SAndroid Build Coastguard Worker	'-Wno-pointer-arith',
47*d83cc019SAndroid Build Coastguard Worker	'-Wno-sign-compare',
48*d83cc019SAndroid Build Coastguard Worker# Macros asserting on the range of their arguments triggers this.
49*d83cc019SAndroid Build Coastguard Worker	'-Wno-type-limits',
50*d83cc019SAndroid Build Coastguard Worker	'-Wno-unused-parameter',
51*d83cc019SAndroid Build Coastguard Worker	'-Wno-unused-result',
52*d83cc019SAndroid Build Coastguard Worker
53*d83cc019SAndroid Build Coastguard Worker	'-Werror=address',
54*d83cc019SAndroid Build Coastguard Worker	'-Werror=array-bounds',
55*d83cc019SAndroid Build Coastguard Worker	'-Werror=implicit',
56*d83cc019SAndroid Build Coastguard Worker	'-Werror=init-self',
57*d83cc019SAndroid Build Coastguard Worker	'-Werror=int-to-pointer-cast',
58*d83cc019SAndroid Build Coastguard Worker	'-Werror=main',
59*d83cc019SAndroid Build Coastguard Worker	'-Werror=missing-braces',
60*d83cc019SAndroid Build Coastguard Worker	'-Werror=nonnull',
61*d83cc019SAndroid Build Coastguard Worker	'-Werror=pointer-to-int-cast',
62*d83cc019SAndroid Build Coastguard Worker	'-Werror=return-type',
63*d83cc019SAndroid Build Coastguard Worker	'-Werror=sequence-point',
64*d83cc019SAndroid Build Coastguard Worker	'-Werror=trigraphs',
65*d83cc019SAndroid Build Coastguard Worker	'-Werror=write-strings',
66*d83cc019SAndroid Build Coastguard Worker# Disable the memory allocating builtins as they may cause unexpected behavior
67*d83cc019SAndroid Build Coastguard Worker# with our framework. They *may* get optimized out in favor of a register or
68*d83cc019SAndroid Build Coastguard Worker# stack variable, making them effectively local. Local variables do not play
69*d83cc019SAndroid Build Coastguard Worker# well with longjmp which is heavily used by IGT framework.
70*d83cc019SAndroid Build Coastguard Worker	'-fno-builtin-malloc',
71*d83cc019SAndroid Build Coastguard Worker	'-fno-builtin-calloc',
72*d83cc019SAndroid Build Coastguard Worker]
73*d83cc019SAndroid Build Coastguard Worker
74*d83cc019SAndroid Build Coastguard Workerforeach cc_arg : cc_args
75*d83cc019SAndroid Build Coastguard Worker  if cc.has_argument(cc_arg)
76*d83cc019SAndroid Build Coastguard Worker    add_global_arguments(cc_arg, language : 'c')
77*d83cc019SAndroid Build Coastguard Worker  endif
78*d83cc019SAndroid Build Coastguard Workerendforeach
79*d83cc019SAndroid Build Coastguard Worker
80*d83cc019SAndroid Build Coastguard Workerbuild_chamelium = get_option('chamelium')
81*d83cc019SAndroid Build Coastguard Workerbuild_docs = get_option('docs')
82*d83cc019SAndroid Build Coastguard Workerbuild_tests = not get_option('tests').disabled()
83*d83cc019SAndroid Build Coastguard Workerwith_libdrm = get_option('libdrm_drivers')
84*d83cc019SAndroid Build Coastguard Worker
85*d83cc019SAndroid Build Coastguard Workerbuild_info = ['Build type: ' + get_option('buildtype')]
86*d83cc019SAndroid Build Coastguard Worker
87*d83cc019SAndroid Build Coastguard Workerinc = include_directories('include/drm-uapi', 'lib', 'lib/stubs/syscalls', '.')
88*d83cc019SAndroid Build Coastguard Worker
89*d83cc019SAndroid Build Coastguard Workerinc_for_gtkdoc = include_directories('lib')
90*d83cc019SAndroid Build Coastguard Worker
91*d83cc019SAndroid Build Coastguard Workerconfig = configuration_data()
92*d83cc019SAndroid Build Coastguard Worker
93*d83cc019SAndroid Build Coastguard Workernull_dep = dependency('', required : false)
94*d83cc019SAndroid Build Coastguard Worker
95*d83cc019SAndroid Build Coastguard Workerlibdrm_info = []
96*d83cc019SAndroid Build Coastguard Workerlibdrm_intel = null_dep
97*d83cc019SAndroid Build Coastguard Workerlibdrm_nouveau = null_dep
98*d83cc019SAndroid Build Coastguard Workerlibdrm_amdgpu = null_dep
99*d83cc019SAndroid Build Coastguard Worker
100*d83cc019SAndroid Build Coastguard Workerlibdrm_version = '>=2.4.82'
101*d83cc019SAndroid Build Coastguard Workerlibdrm = dependency('libdrm', version : libdrm_version)
102*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('intel')
103*d83cc019SAndroid Build Coastguard Worker	libdrm_intel = dependency('libdrm_intel', version : libdrm_version, required : with_libdrm.contains('intel'))
104*d83cc019SAndroid Build Coastguard Worker	libdrm_info += 'intel'
105*d83cc019SAndroid Build Coastguard Workerendif
106*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('nouveau')
107*d83cc019SAndroid Build Coastguard Worker	libdrm_nouveau = dependency('libdrm_nouveau', version : libdrm_version, required : with_libdrm.contains('nouveau'))
108*d83cc019SAndroid Build Coastguard Worker	libdrm_info += 'nouveau'
109*d83cc019SAndroid Build Coastguard Workerendif
110*d83cc019SAndroid Build Coastguard Workerif with_libdrm.contains('auto') or with_libdrm.contains('amdgpu')
111*d83cc019SAndroid Build Coastguard Worker	libdrm_amdgpu = dependency('libdrm_amdgpu', version : libdrm_version, required : with_libdrm.contains('amdgpu'))
112*d83cc019SAndroid Build Coastguard Worker	libdrm_info += 'amdgpu'
113*d83cc019SAndroid Build Coastguard Workerendif
114*d83cc019SAndroid Build Coastguard Worker
115*d83cc019SAndroid Build Coastguard Workerbuild_info += 'With libdrm: ' + ','.join(libdrm_info)
116*d83cc019SAndroid Build Coastguard Worker
117*d83cc019SAndroid Build Coastguard Workerpciaccess = dependency('pciaccess', version : '>=0.10')
118*d83cc019SAndroid Build Coastguard Workerlibkmod = dependency('libkmod')
119*d83cc019SAndroid Build Coastguard Workerlibprocps = dependency('libprocps', required : true)
120*d83cc019SAndroid Build Coastguard Worker
121*d83cc019SAndroid Build Coastguard Workerlibunwind = dependency('libunwind', required : get_option('libunwind'))
122*d83cc019SAndroid Build Coastguard Workerbuild_info += 'With libunwind: @0@'.format(libunwind.found())
123*d83cc019SAndroid Build Coastguard Worker
124*d83cc019SAndroid Build Coastguard Workerlibdw = dependency('libdw', required : true)
125*d83cc019SAndroid Build Coastguard Workerpixman = dependency('pixman-1', required : true)
126*d83cc019SAndroid Build Coastguard Worker
127*d83cc019SAndroid Build Coastguard Workervalgrind = dependency('valgrind', required : get_option('valgrind'))
128*d83cc019SAndroid Build Coastguard Workerif valgrind.found()
129*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_VALGRIND', 1)
130*d83cc019SAndroid Build Coastguard Workerendif
131*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Valgrind annotations: @0@'.format(valgrind.found())
132*d83cc019SAndroid Build Coastguard Worker
133*d83cc019SAndroid Build Coastguard Workercairo = dependency('cairo', version : '>1.12.0', required : true)
134*d83cc019SAndroid Build Coastguard Workerlibudev = dependency('libudev', required : true)
135*d83cc019SAndroid Build Coastguard Workerglib = dependency('glib-2.0', required : true)
136*d83cc019SAndroid Build Coastguard Worker
137*d83cc019SAndroid Build Coastguard Workerxmlrpc = dependency('xmlrpc', required : false)
138*d83cc019SAndroid Build Coastguard Workerxmlrpc_util = dependency('xmlrpc_util', required : false)
139*d83cc019SAndroid Build Coastguard Workerxmlrpc_client = dependency('xmlrpc_client', required : false)
140*d83cc019SAndroid Build Coastguard Worker
141*d83cc019SAndroid Build Coastguard Workerxmlrpc_cmd = find_program('xmlrpc-c-config', required : false)
142*d83cc019SAndroid Build Coastguard Workerif not xmlrpc.found() and xmlrpc_cmd.found()
143*d83cc019SAndroid Build Coastguard Worker	libs_cmd = run_command(xmlrpc_cmd, 'client', '--libs')
144*d83cc019SAndroid Build Coastguard Worker	cflags_cmd = run_command(xmlrpc_cmd, 'client', '--cflags')
145*d83cc019SAndroid Build Coastguard Worker
146*d83cc019SAndroid Build Coastguard Worker	if libs_cmd.returncode() == 0 and cflags_cmd.returncode() == 0
147*d83cc019SAndroid Build Coastguard Worker		xmlrpc = declare_dependency(compile_args: cflags_cmd.stdout().strip().split(),
148*d83cc019SAndroid Build Coastguard Worker					    link_args : libs_cmd.stdout().strip().split())
149*d83cc019SAndroid Build Coastguard Worker		xmlrpc_util = declare_dependency()
150*d83cc019SAndroid Build Coastguard Worker		xmlrpc_client = declare_dependency()
151*d83cc019SAndroid Build Coastguard Worker	endif
152*d83cc019SAndroid Build Coastguard Workerendif
153*d83cc019SAndroid Build Coastguard Worker
154*d83cc019SAndroid Build Coastguard Workerif build_chamelium.enabled() and not (xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found())
155*d83cc019SAndroid Build Coastguard Worker	error('Chamelium build forced and required dependency xmlrpc not found')
156*d83cc019SAndroid Build Coastguard Workerendif
157*d83cc019SAndroid Build Coastguard Worker
158*d83cc019SAndroid Build Coastguard Workergsl = dependency('gsl', required : build_chamelium)
159*d83cc019SAndroid Build Coastguard Workeralsa = dependency('alsa', required : build_chamelium)
160*d83cc019SAndroid Build Coastguard Workerlibcurl = dependency('libcurl', required : build_chamelium)
161*d83cc019SAndroid Build Coastguard Worker
162*d83cc019SAndroid Build Coastguard Workerif xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found() and gsl.found() and alsa.found() and libcurl.found()
163*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_CHAMELIUM', 1)
164*d83cc019SAndroid Build Coastguard Worker	chamelium = declare_dependency(dependencies : [
165*d83cc019SAndroid Build Coastguard Worker		xmlrpc,
166*d83cc019SAndroid Build Coastguard Worker		xmlrpc_util,
167*d83cc019SAndroid Build Coastguard Worker		xmlrpc_client,
168*d83cc019SAndroid Build Coastguard Worker		gsl,
169*d83cc019SAndroid Build Coastguard Worker		alsa,
170*d83cc019SAndroid Build Coastguard Worker	])
171*d83cc019SAndroid Build Coastguard Workerelse
172*d83cc019SAndroid Build Coastguard Worker	chamelium = disabler()
173*d83cc019SAndroid Build Coastguard Workerendif
174*d83cc019SAndroid Build Coastguard Worker
175*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build Chamelium test: @0@'.format(chamelium.found())
176*d83cc019SAndroid Build Coastguard Worker
177*d83cc019SAndroid Build Coastguard Workerpthreads = dependency('threads')
178*d83cc019SAndroid Build Coastguard Workermath = cc.find_library('m')
179*d83cc019SAndroid Build Coastguard Workerrealtime = cc.find_library('rt')
180*d83cc019SAndroid Build Coastguard Workerdlsym = cc.find_library('dl')
181*d83cc019SAndroid Build Coastguard Workerzlib = cc.find_library('z')
182*d83cc019SAndroid Build Coastguard Worker
183*d83cc019SAndroid Build Coastguard Workerif cc.links('''
184*d83cc019SAndroid Build Coastguard Worker#include <stdint.h>
185*d83cc019SAndroid Build Coastguard Workerint main(void) {
186*d83cc019SAndroid Build Coastguard Worker  uint32_t x32 = 0;
187*d83cc019SAndroid Build Coastguard Worker  uint64_t x64 = 0;
188*d83cc019SAndroid Build Coastguard Worker  __atomic_load_n(&x32, __ATOMIC_SEQ_CST);
189*d83cc019SAndroid Build Coastguard Worker  __atomic_load_n(&x64, __ATOMIC_SEQ_CST);
190*d83cc019SAndroid Build Coastguard Worker  return 0;
191*d83cc019SAndroid Build Coastguard Worker}''', name : 'built-in atomics')
192*d83cc019SAndroid Build Coastguard Worker	libatomic = null_dep
193*d83cc019SAndroid Build Coastguard Workerelse
194*d83cc019SAndroid Build Coastguard Worker	libatomic = cc.find_library('atomic')
195*d83cc019SAndroid Build Coastguard Workerendif
196*d83cc019SAndroid Build Coastguard Worker
197*d83cc019SAndroid Build Coastguard Workerif cc.has_header('linux/kd.h')
198*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_LINUX_KD_H', 1)
199*d83cc019SAndroid Build Coastguard Workerendif
200*d83cc019SAndroid Build Coastguard Workerif cc.has_header('sys/kd.h')
201*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_SYS_KD_H', 1)
202*d83cc019SAndroid Build Coastguard Workerendif
203*d83cc019SAndroid Build Coastguard Workerif cc.has_header('libgen.h')
204*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_LIBGEN_H', 1)
205*d83cc019SAndroid Build Coastguard Workerendif
206*d83cc019SAndroid Build Coastguard Workerif cc.has_header('sys/io.h')
207*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_SYS_IO_H', 1)
208*d83cc019SAndroid Build Coastguard Workerendif
209*d83cc019SAndroid Build Coastguard Workerif cc.has_header('cpuid.h')
210*d83cc019SAndroid Build Coastguard Worker	# FIXME: Do we need the example link test from configure.ac?
211*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_CPUID_H', 1)
212*d83cc019SAndroid Build Coastguard Workerendif
213*d83cc019SAndroid Build Coastguard Workerif cc.has_header_symbol('unistd.h', 'gettid', args : '-D_GNU_SOURCE')
214*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_GETTID', 1)
215*d83cc019SAndroid Build Coastguard Workerendif
216*d83cc019SAndroid Build Coastguard Worker
217*d83cc019SAndroid Build Coastguard Workerif cc.has_member('struct sysinfo', 'totalram',
218*d83cc019SAndroid Build Coastguard Worker		prefix : '#include <sys/sysinfo.h>')
219*d83cc019SAndroid Build Coastguard Worker	config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1)
220*d83cc019SAndroid Build Coastguard Workerendif
221*d83cc019SAndroid Build Coastguard Worker
222*d83cc019SAndroid Build Coastguard Workerhave = cc.has_function('memfd_create', prefix : '''#include <sys/mman.h>''', args : '-D_GNU_SOURCE')
223*d83cc019SAndroid Build Coastguard Workerconfig.set10('HAVE_MEMFD_CREATE', have)
224*d83cc019SAndroid Build Coastguard Worker
225*d83cc019SAndroid Build Coastguard Workeradd_project_arguments('-D_GNU_SOURCE', language : 'c')
226*d83cc019SAndroid Build Coastguard Workeradd_project_arguments('-include', 'config.h', language : 'c')
227*d83cc019SAndroid Build Coastguard Worker
228*d83cc019SAndroid Build Coastguard Worker# FEATURE_TEST_MACROS(7)
229*d83cc019SAndroid Build Coastguard Worker# performs lightweight overflow checks on quite a few libc functions
230*d83cc019SAndroid Build Coastguard Worker# requires -O optimizations
231*d83cc019SAndroid Build Coastguard Workerif  ['debugoptimized', 'release', 'minsize'].contains(get_option('buildtype'))
232*d83cc019SAndroid Build Coastguard Worker	add_project_arguments('-D_FORTIFY_SOURCE=2', language : 'c')
233*d83cc019SAndroid Build Coastguard Workerendif
234*d83cc019SAndroid Build Coastguard Worker
235*d83cc019SAndroid Build Coastguard Workerconfig.set('PACKAGE_NAME', meson.project_name())
236*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('PACKAGE_VERSION', meson.project_version())
237*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('PACKAGE', meson.project_name())
238*d83cc019SAndroid Build Coastguard Workerconfig.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
239*d83cc019SAndroid Build Coastguard Workerconfig.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family())
240*d83cc019SAndroid Build Coastguard Worker
241*d83cc019SAndroid Build Coastguard Workerconfigure_file(output: 'config.h', install: false, configuration: config)
242*d83cc019SAndroid Build Coastguard Worker
243*d83cc019SAndroid Build Coastguard Workerprefix = get_option('prefix')
244*d83cc019SAndroid Build Coastguard Workerbindir = get_option('bindir')
245*d83cc019SAndroid Build Coastguard Workerdatadir = join_paths(get_option('datadir'), 'igt-gpu-tools')
246*d83cc019SAndroid Build Coastguard Workerincludedir = get_option('includedir')
247*d83cc019SAndroid Build Coastguard Workerlibdir = get_option('libdir')
248*d83cc019SAndroid Build Coastguard Workerlibexecdir = join_paths(get_option('libexecdir'), 'igt-gpu-tools')
249*d83cc019SAndroid Build Coastguard Workeramdgpudir = join_paths(libexecdir, 'amdgpu')
250*d83cc019SAndroid Build Coastguard Workermandir = get_option('mandir')
251*d83cc019SAndroid Build Coastguard Workerpkgconfigdir = join_paths(libdir, 'pkgconfig')
252*d83cc019SAndroid Build Coastguard Worker
253*d83cc019SAndroid Build Coastguard Workerif get_option('use_rpath')
254*d83cc019SAndroid Build Coastguard Worker	# Set up runpath for the test executables towards libigt.so.
255*d83cc019SAndroid Build Coastguard Worker	# The path should be relative to $ORIGIN so the library is
256*d83cc019SAndroid Build Coastguard Worker	# still found properly even if installed to a path other than
257*d83cc019SAndroid Build Coastguard Worker	# prefix.
258*d83cc019SAndroid Build Coastguard Worker
259*d83cc019SAndroid Build Coastguard Worker	# libdir and bindir are pathnames relative to prefix. meson
260*d83cc019SAndroid Build Coastguard Worker	# enforces this.
261*d83cc019SAndroid Build Coastguard Worker
262*d83cc019SAndroid Build Coastguard Worker	# 1. Start from the executable.
263*d83cc019SAndroid Build Coastguard Worker	# 2. Executables are installed in certain dir. Add a .. for each
264*d83cc019SAndroid Build Coastguard Worker	#    directory name in it.
265*d83cc019SAndroid Build Coastguard Worker	# 3. Add relative path to libdir.
266*d83cc019SAndroid Build Coastguard Worker
267*d83cc019SAndroid Build Coastguard Worker	bindir_rpathdir = '$ORIGIN'
268*d83cc019SAndroid Build Coastguard Worker	foreach p : bindir.split('/')
269*d83cc019SAndroid Build Coastguard Worker		bindir_rpathdir = join_paths(bindir_rpathdir, '..')
270*d83cc019SAndroid Build Coastguard Worker	endforeach
271*d83cc019SAndroid Build Coastguard Worker	bindir_rpathdir = join_paths(bindir_rpathdir, libdir)
272*d83cc019SAndroid Build Coastguard Worker
273*d83cc019SAndroid Build Coastguard Worker	libexecdir_rpathdir = '$ORIGIN'
274*d83cc019SAndroid Build Coastguard Worker	foreach p : libexecdir.split('/')
275*d83cc019SAndroid Build Coastguard Worker		libexecdir_rpathdir = join_paths(libexecdir_rpathdir, '..')
276*d83cc019SAndroid Build Coastguard Worker	endforeach
277*d83cc019SAndroid Build Coastguard Worker	libexecdir_rpathdir = join_paths(libexecdir_rpathdir, libdir)
278*d83cc019SAndroid Build Coastguard Worker
279*d83cc019SAndroid Build Coastguard Worker	amdgpudir_rpathdir = '$ORIGIN'
280*d83cc019SAndroid Build Coastguard Worker	foreach p : amdgpudir.split('/')
281*d83cc019SAndroid Build Coastguard Worker		amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, '..')
282*d83cc019SAndroid Build Coastguard Worker	endforeach
283*d83cc019SAndroid Build Coastguard Worker	amdgpudir_rpathdir = join_paths(amdgpudir_rpathdir, libdir)
284*d83cc019SAndroid Build Coastguard Workerelse
285*d83cc019SAndroid Build Coastguard Worker	bindir_rpathdir = ''
286*d83cc019SAndroid Build Coastguard Worker	libexecdir_rpathdir = ''
287*d83cc019SAndroid Build Coastguard Worker	amdgpudir_rpathdir = ''
288*d83cc019SAndroid Build Coastguard Workerendif
289*d83cc019SAndroid Build Coastguard Worker
290*d83cc019SAndroid Build Coastguard Workersubdir('lib')
291*d83cc019SAndroid Build Coastguard Workerif build_tests
292*d83cc019SAndroid Build Coastguard Worker	subdir('tests')
293*d83cc019SAndroid Build Coastguard Workerendif
294*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build tests: @0@'.format(build_tests)
295*d83cc019SAndroid Build Coastguard Worker
296*d83cc019SAndroid Build Coastguard Workersubdir('benchmarks')
297*d83cc019SAndroid Build Coastguard Workersubdir('tools')
298*d83cc019SAndroid Build Coastguard Workersubdir('runner')
299*d83cc019SAndroid Build Coastguard Workerif libdrm_intel.found()
300*d83cc019SAndroid Build Coastguard Worker	subdir('assembler')
301*d83cc019SAndroid Build Coastguard Workerendif
302*d83cc019SAndroid Build Coastguard Workersubdir('overlay')
303*d83cc019SAndroid Build Coastguard Workersubdir('man')
304*d83cc019SAndroid Build Coastguard Worker
305*d83cc019SAndroid Build Coastguard Workergtk_doc = dependency('gtk-doc', required : build_docs)
306*d83cc019SAndroid Build Coastguard Workerpython3 = find_program('python3', required : build_docs)
307*d83cc019SAndroid Build Coastguard Workerif build_tests and gtk_doc.found() and python3.found()
308*d83cc019SAndroid Build Coastguard Worker	subdir('docs')
309*d83cc019SAndroid Build Coastguard Workerelif build_docs.enabled()
310*d83cc019SAndroid Build Coastguard Worker	error('Documentation requires building tests')
311*d83cc019SAndroid Build Coastguard Workerendif
312*d83cc019SAndroid Build Coastguard Workerbuild_info += 'Build documentation: @0@'.format(build_tests and gtk_doc.found())
313*d83cc019SAndroid Build Coastguard Worker
314*d83cc019SAndroid Build Coastguard Workermessage('Build options')
315*d83cc019SAndroid Build Coastguard Workermessage('=============')
316*d83cc019SAndroid Build Coastguard Workerforeach str : build_info
317*d83cc019SAndroid Build Coastguard Worker	message(str)
318*d83cc019SAndroid Build Coastguard Workerendforeach
319*d83cc019SAndroid Build Coastguard Worker
320*d83cc019SAndroid Build Coastguard Workerif cairo.version().version_compare('<1.17.2')
321*d83cc019SAndroid Build Coastguard Worker	if pixman.version().version_compare('<0.36.0')
322*d83cc019SAndroid Build Coastguard Worker		warning('Pixman < 0.36.0 found, cannot test HDR formats')
323*d83cc019SAndroid Build Coastguard Worker	endif
324*d83cc019SAndroid Build Coastguard Worker	warning('Cairo < 1.17.2 found, cannot test HDR formats')
325*d83cc019SAndroid Build Coastguard Workerelif pixman.version().version_compare('<0.36.0')
326*d83cc019SAndroid Build Coastguard Worker	# Cairo 1.17.2 requires 0.36.0 to compile, but somehow it went missing?
327*d83cc019SAndroid Build Coastguard Worker	error('Cairo with floating point support found, but pixman version too old')
328*d83cc019SAndroid Build Coastguard Workerendif
329