Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 1 | project('IGT gpu tests', 'c', |
Petri Latvala | 7f93a26 | 2017-10-04 13:48:15 +0300 | [diff] [blame] | 2 | version : '1.20', |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 3 | default_options: [ |
| 4 | 'warning_level=2', |
| 5 | 'c_std=gnu99', |
| 6 | ], |
Daniel Vetter | 866970a | 2017-09-05 14:36:24 +0200 | [diff] [blame] | 7 | license : 'MIT', |
| 8 | meson_version : '>0.40.0') |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 9 | |
| 10 | cc = meson.get_compiler('c') |
| 11 | |
Daniel Vetter | c4614fe | 2017-09-05 14:36:20 +0200 | [diff] [blame] | 12 | cc_args = [ |
| 13 | '-Wno-unused-parameter', |
| 14 | '-Wno-sign-compare', |
| 15 | '-Wno-missing-field-initializers', |
| 16 | '-Wno-clobbered', |
Eric Anholt | cae05d9 | 2017-09-05 14:36:17 +0200 | [diff] [blame] | 17 | # Macros asserting on the range of their arguments triggers this. |
Daniel Vetter | c4614fe | 2017-09-05 14:36:20 +0200 | [diff] [blame] | 18 | '-Wno-type-limits', |
Eric Anholt | cae05d9 | 2017-09-05 14:36:17 +0200 | [diff] [blame] | 19 | # igt_assert(0) in switch statements triggers a bunch of this. |
Daniel Vetter | c4614fe | 2017-09-05 14:36:20 +0200 | [diff] [blame] | 20 | '-Wimplicit-fallthrough=0', |
| 21 | ] |
| 22 | |
| 23 | foreach cc_arg : cc_args |
| 24 | if cc.has_argument(cc_arg) |
| 25 | add_global_arguments(cc_arg, language : 'c') |
| 26 | endif |
| 27 | endforeach |
Eric Anholt | cae05d9 | 2017-09-05 14:36:17 +0200 | [diff] [blame] | 28 | |
Eric Anholt | 4eb53c7 | 2017-11-10 12:35:15 -0800 | [diff] [blame] | 29 | inc = include_directories('include/drm-uapi', 'lib', '.') |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 30 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 31 | config = configuration_data() |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 32 | |
| 33 | libdrm = dependency('libdrm', version : '>=2.4.82') |
| 34 | libdrm_intel = dependency('libdrm_intel', required : false) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 35 | libdrm_nouveau = dependency('libdrm_nouveau', required : false) |
| 36 | libdrm_amdgpu = dependency('libdrm_amdgpu', required : false) |
| 37 | |
| 38 | pciaccess = dependency('pciaccess', version : '>=0.10') |
| 39 | libkmod = dependency('libkmod') |
Arkadiusz Hiler | 643dc09 | 2017-11-24 17:17:48 +0200 | [diff] [blame^] | 40 | libprocps = dependency('libprocps', required : true) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 41 | |
| 42 | valgrind = dependency('valgrind', required : false) |
| 43 | if valgrind.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 44 | config.set('HAVE_VALGRIND', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 45 | endif |
| 46 | |
| 47 | cairo = dependency('cairo', version : '>1.12.0', required : false) |
| 48 | |
| 49 | libudev = dependency('libudev', required : false) |
| 50 | if libudev.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 51 | config.set('HAVE_UDEV', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 52 | endif |
| 53 | |
| 54 | glib = dependency('glib-2.0', required : false) |
| 55 | if glib.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 56 | config.set('HAVE_GLIB', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 57 | endif |
| 58 | |
| 59 | libunwind = dependency('libunwind') |
| 60 | gsl = dependency('gsl', required : false) |
| 61 | alsa = dependency('alsa', required : false) |
| 62 | |
| 63 | pixman = dependency('pixman-1', required : false) |
| 64 | xmlrpc = dependency('xmlrpc', required : false) |
| 65 | xmlrpc_util = dependency('xmlrpc_util', required : false) |
| 66 | xmlrpc_client = dependency('xmlrpc_client', required : false) |
| 67 | |
Jani Nikula | 1ae18b0 | 2017-10-24 11:14:14 +0300 | [diff] [blame] | 68 | xmlrpc_cmd = find_program('xmlrpc-c-config', required : false) |
| 69 | if 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 Hiler | 892abc6 | 2017-10-17 15:05:41 +0300 | [diff] [blame] | 72 | |
| 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 |
| 79 | endif |
| 80 | |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 81 | if 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 Hiler | 892abc6 | 2017-10-17 15:05:41 +0300 | [diff] [blame] | 84 | config.set('HAVE_CHAMELIUM', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 85 | else |
| 86 | chamelium = dependency('', required: false) |
| 87 | endif |
| 88 | |
| 89 | pthreads = dependency('threads') |
| 90 | math = cc.find_library('m') |
| 91 | realtime = cc.find_library('rt') |
| 92 | dlsym = cc.find_library('dl') |
| 93 | zlib = cc.find_library('z') |
| 94 | |
| 95 | if cc.has_header('linux/kd.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 96 | config.set('HAVE_LINUX_KD_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 97 | endif |
| 98 | if cc.has_header('sys/kd.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 99 | config.set('HAVE_SYS_KD_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 100 | endif |
| 101 | if cc.has_header('libgen.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 102 | config.set('HAVE_LIBGEN_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 103 | endif |
| 104 | if cc.has_header('sys/io.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 105 | config.set('HAVE_SYS_IO_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 106 | endif |
| 107 | if cc.has_header('cpuid.h') |
| 108 | # FIXME: Do we need the example link test from configure.ac? |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 109 | config.set('HAVE_CPUID_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 110 | endif |
| 111 | |
| 112 | if cc.has_member('struct sysinfo', 'totalram', |
| 113 | prefix : '#include <sys/sysinfo.h>') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 114 | config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 115 | endif |
| 116 | |
| 117 | add_project_arguments('-D_GNU_SOURCE', language : 'c') |
| 118 | add_project_arguments('-include', 'config.h', language : 'c') |
| 119 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 120 | config.set('PACKAGE_NAME', meson.project_name()) |
| 121 | config.set_quoted('PACKAGE_VERSION', meson.project_version()) |
| 122 | config.set_quoted('PACKAGE', meson.project_name()) |
| 123 | config.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version()) |
| 124 | config.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family()) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 125 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 126 | configure_file(output: 'config.h', install: false, configuration: config) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 127 | |
| 128 | subdir('lib') |
| 129 | subdir('tests') |
| 130 | subdir('benchmarks') |
| 131 | subdir('tools') |
| 132 | if libdrm_intel.found() |
| 133 | subdir('assembler') |
Eric Anholt | b26e918 | 2017-09-27 11:30:52 -0700 | [diff] [blame] | 134 | if ['x86', 'x86_64'].contains(host_machine.cpu_family()) |
| 135 | subdir('overlay') |
| 136 | endif |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 137 | endif |
Daniel Vetter | 895236c | 2017-09-05 14:36:21 +0200 | [diff] [blame] | 138 | subdir('man') |