blob: 1cc501f3062f6899c1423a88c656291c7cbf54d0 [file] [log] [blame]
Daniel Vetter9a7d8502017-09-05 14:36:14 +02001project('IGT gpu tests', 'c',
2 version : '1.19',
3 default_options: [
4 'warning_level=2',
5 'c_std=gnu99',
6 ],
Daniel Vetter866970a2017-09-05 14:36:24 +02007 license : 'MIT',
8 meson_version : '>0.40.0')
Daniel Vetter9a7d8502017-09-05 14:36:14 +02009
10cc = meson.get_compiler('c')
11
Daniel Vetterc4614fe2017-09-05 14:36:20 +020012cc_args = [
13 '-Wno-unused-parameter',
14 '-Wno-sign-compare',
15 '-Wno-missing-field-initializers',
16 '-Wno-clobbered',
Eric Anholtcae05d92017-09-05 14:36:17 +020017# Macros asserting on the range of their arguments triggers this.
Daniel Vetterc4614fe2017-09-05 14:36:20 +020018 '-Wno-type-limits',
Eric Anholtcae05d92017-09-05 14:36:17 +020019# igt_assert(0) in switch statements triggers a bunch of this.
Daniel Vetterc4614fe2017-09-05 14:36:20 +020020 '-Wimplicit-fallthrough=0',
21]
22
23foreach cc_arg : cc_args
24 if cc.has_argument(cc_arg)
25 add_global_arguments(cc_arg, language : 'c')
26 endif
27endforeach
Eric Anholtcae05d92017-09-05 14:36:17 +020028
Daniel Vetter9a7d8502017-09-05 14:36:14 +020029inc = include_directories('lib', '.')
30
Daniel Vetter6e262252017-09-08 17:14:48 +020031config = configuration_data()
Daniel Vetter9a7d8502017-09-05 14:36:14 +020032
33libdrm = dependency('libdrm', version : '>=2.4.82')
34libdrm_intel = dependency('libdrm_intel', required : false)
35libdrm_vc4 = dependency('libdrm_vc4', required : false)
36libdrm_nouveau = dependency('libdrm_nouveau', required : false)
37libdrm_amdgpu = dependency('libdrm_amdgpu', required : false)
38
39pciaccess = dependency('pciaccess', version : '>=0.10')
40libkmod = dependency('libkmod')
41libprocps = dependency('libprocps', required : false)
42if libprocps.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020043 config.set('HAVE_PROCPS', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020044endif
45
46valgrind = dependency('valgrind', required : false)
47if valgrind.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020048 config.set('HAVE_VALGRIND', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020049endif
50
51cairo = dependency('cairo', version : '>1.12.0', required : false)
52
53libudev = dependency('libudev', required : false)
54if libudev.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020055 config.set('HAVE_UDEV', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020056endif
57
58glib = dependency('glib-2.0', required : false)
59if glib.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020060 config.set('HAVE_GLIB', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020061endif
62
63libunwind = dependency('libunwind')
64gsl = dependency('gsl', required : false)
65alsa = dependency('alsa', required : false)
66
67pixman = dependency('pixman-1', required : false)
68xmlrpc = dependency('xmlrpc', required : false)
69xmlrpc_util = dependency('xmlrpc_util', required : false)
70xmlrpc_client = dependency('xmlrpc_client', required : false)
71
72if pixman.found() and xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found()
73 chamelium = declare_dependency(dependencies : [ pixman, xmlrpc,
74 xmlrpc_util, xmlrpc_client])
75else
76 chamelium = dependency('', required: false)
77endif
78
79pthreads = dependency('threads')
80math = cc.find_library('m')
81realtime = cc.find_library('rt')
82dlsym = cc.find_library('dl')
83zlib = cc.find_library('z')
84
85if cc.has_header('linux/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020086 config.set('HAVE_LINUX_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020087endif
88if cc.has_header('sys/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020089 config.set('HAVE_SYS_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020090endif
91if cc.has_header('libgen.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020092 config.set('HAVE_LIBGEN_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020093endif
94if cc.has_header('sys/io.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020095 config.set('HAVE_SYS_IO_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020096endif
97if cc.has_header('cpuid.h')
98 # FIXME: Do we need the example link test from configure.ac?
Daniel Vetter6e262252017-09-08 17:14:48 +020099 config.set('HAVE_CPUID_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200100endif
101
102if cc.has_member('struct sysinfo', 'totalram',
103 prefix : '#include <sys/sysinfo.h>')
Daniel Vetter6e262252017-09-08 17:14:48 +0200104 config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200105endif
106
107add_project_arguments('-D_GNU_SOURCE', language : 'c')
108add_project_arguments('-include', 'config.h', language : 'c')
109
Daniel Vetter6e262252017-09-08 17:14:48 +0200110config.set('PACKAGE_NAME', meson.project_name())
111config.set_quoted('PACKAGE_VERSION', meson.project_version())
112config.set_quoted('PACKAGE', meson.project_name())
113config.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
114config.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family())
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200115
Daniel Vetter6e262252017-09-08 17:14:48 +0200116configure_file(output: 'config.h', install: false, configuration: config)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200117
118subdir('lib')
119subdir('tests')
120subdir('benchmarks')
121subdir('tools')
122if libdrm_intel.found()
123 subdir('assembler')
124 subdir('overlay')
125endif
Daniel Vetter895236c2017-09-05 14:36:21 +0200126subdir('man')