blob: 8e01b05d4d51e4808fc3e4a2952a063a090f4280 [file] [log] [blame]
Daniel Vetter9a7d8502017-09-05 14:36:14 +02001project('IGT gpu tests', 'c',
Petri Latvala7f93a262017-10-04 13:48:15 +03002 version : '1.20',
Daniel Vetter9a7d8502017-09-05 14:36:14 +02003 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
Eric Anholt4eb53c72017-11-10 12:35:15 -080029inc = include_directories('include/drm-uapi', 'lib', '.')
Daniel Vetter9a7d8502017-09-05 14:36:14 +020030
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)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020035libdrm_nouveau = dependency('libdrm_nouveau', required : false)
36libdrm_amdgpu = dependency('libdrm_amdgpu', required : false)
37
38pciaccess = dependency('pciaccess', version : '>=0.10')
39libkmod = dependency('libkmod')
Arkadiusz Hiler643dc092017-11-24 17:17:48 +020040libprocps = dependency('libprocps', required : true)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020041
42valgrind = dependency('valgrind', required : false)
43if valgrind.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020044 config.set('HAVE_VALGRIND', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020045endif
46
47cairo = dependency('cairo', version : '>1.12.0', required : false)
48
49libudev = dependency('libudev', required : false)
50if libudev.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020051 config.set('HAVE_UDEV', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020052endif
53
54glib = dependency('glib-2.0', required : false)
55if glib.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020056 config.set('HAVE_GLIB', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020057endif
58
59libunwind = dependency('libunwind')
60gsl = dependency('gsl', required : false)
61alsa = dependency('alsa', required : false)
62
63pixman = dependency('pixman-1', required : false)
64xmlrpc = dependency('xmlrpc', required : false)
65xmlrpc_util = dependency('xmlrpc_util', required : false)
66xmlrpc_client = dependency('xmlrpc_client', required : false)
67
Jani Nikula1ae18b02017-10-24 11:14:14 +030068xmlrpc_cmd = find_program('xmlrpc-c-config', required : false)
69if not xmlrpc.found() and xmlrpc_cmd.found()
70 libs_cmd = run_command(xmlrpc_cmd, 'client', '--libs')
71 cflags_cmd = run_command(xmlrpc_cmd, 'client', '--cflags')
Arkadiusz Hiler892abc62017-10-17 15:05:41 +030072
73 if libs_cmd.returncode() == 0 and cflags_cmd.returncode() == 0
74 xmlrpc = declare_dependency(compile_args: cflags_cmd.stdout().strip().split(),
75 link_args : libs_cmd.stdout().strip().split())
76 xmlrpc_util = declare_dependency()
77 xmlrpc_client = declare_dependency()
78 endif
79endif
80
Daniel Vetter9a7d8502017-09-05 14:36:14 +020081if pixman.found() and xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found()
82 chamelium = declare_dependency(dependencies : [ pixman, xmlrpc,
83 xmlrpc_util, xmlrpc_client])
Arkadiusz Hiler892abc62017-10-17 15:05:41 +030084 config.set('HAVE_CHAMELIUM', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020085else
86 chamelium = dependency('', required: false)
87endif
88
89pthreads = dependency('threads')
90math = cc.find_library('m')
91realtime = cc.find_library('rt')
92dlsym = cc.find_library('dl')
93zlib = cc.find_library('z')
94
95if cc.has_header('linux/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020096 config.set('HAVE_LINUX_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020097endif
98if cc.has_header('sys/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020099 config.set('HAVE_SYS_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200100endif
101if cc.has_header('libgen.h')
Daniel Vetter6e262252017-09-08 17:14:48 +0200102 config.set('HAVE_LIBGEN_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200103endif
104if cc.has_header('sys/io.h')
Daniel Vetter6e262252017-09-08 17:14:48 +0200105 config.set('HAVE_SYS_IO_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200106endif
107if cc.has_header('cpuid.h')
108 # FIXME: Do we need the example link test from configure.ac?
Daniel Vetter6e262252017-09-08 17:14:48 +0200109 config.set('HAVE_CPUID_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200110endif
111
112if cc.has_member('struct sysinfo', 'totalram',
113 prefix : '#include <sys/sysinfo.h>')
Daniel Vetter6e262252017-09-08 17:14:48 +0200114 config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200115endif
116
117add_project_arguments('-D_GNU_SOURCE', language : 'c')
118add_project_arguments('-include', 'config.h', language : 'c')
119
Daniel Vetter6e262252017-09-08 17:14:48 +0200120config.set('PACKAGE_NAME', meson.project_name())
121config.set_quoted('PACKAGE_VERSION', meson.project_version())
122config.set_quoted('PACKAGE', meson.project_name())
123config.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
124config.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family())
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200125
Daniel Vetter6e262252017-09-08 17:14:48 +0200126configure_file(output: 'config.h', install: false, configuration: config)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200127
128subdir('lib')
129subdir('tests')
130subdir('benchmarks')
131subdir('tools')
132if libdrm_intel.found()
133 subdir('assembler')
Eric Anholtb26e9182017-09-27 11:30:52 -0700134 if ['x86', 'x86_64'].contains(host_machine.cpu_family())
135 subdir('overlay')
136 endif
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200137endif
Daniel Vetter895236c2017-09-05 14:36:21 +0200138subdir('man')