blob: 9036feb173e8cb9bf58ed3cca65dc8512a5a3f51 [file] [log] [blame]
Petri Latvala184a8d62018-01-16 12:32:46 +02001project('intel-gpu-tools', 'c',
Petri Latvala7b685d52018-01-16 15:23:20 +02002 version : '1.21',
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 Vetter491e8c12017-12-05 11:16:49 +010031inc_for_gtkdoc = include_directories('lib')
32
Daniel Vetter6e262252017-09-08 17:14:48 +020033config = configuration_data()
Daniel Vetter9a7d8502017-09-05 14:36:14 +020034
35libdrm = dependency('libdrm', version : '>=2.4.82')
36libdrm_intel = dependency('libdrm_intel', required : false)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020037libdrm_nouveau = dependency('libdrm_nouveau', required : false)
38libdrm_amdgpu = dependency('libdrm_amdgpu', required : false)
39
40pciaccess = dependency('pciaccess', version : '>=0.10')
41libkmod = dependency('libkmod')
Arkadiusz Hiler643dc092017-11-24 17:17:48 +020042libprocps = dependency('libprocps', required : true)
Arkadiusz Hiler36015332017-12-01 15:19:54 +020043libunwind = dependency('libunwind', required : true)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020044
45valgrind = dependency('valgrind', required : false)
46if valgrind.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020047 config.set('HAVE_VALGRIND', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020048endif
49
50cairo = dependency('cairo', version : '>1.12.0', required : false)
51
52libudev = dependency('libudev', required : false)
53if libudev.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020054 config.set('HAVE_UDEV', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020055endif
56
57glib = dependency('glib-2.0', required : false)
58if glib.found()
Daniel Vetter6e262252017-09-08 17:14:48 +020059 config.set('HAVE_GLIB', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020060endif
61
Daniel Vetter9a7d8502017-09-05 14:36:14 +020062gsl = dependency('gsl', required : false)
63alsa = dependency('alsa', required : false)
64
65pixman = dependency('pixman-1', required : false)
66xmlrpc = dependency('xmlrpc', required : false)
67xmlrpc_util = dependency('xmlrpc_util', required : false)
68xmlrpc_client = dependency('xmlrpc_client', required : false)
69
Jani Nikula1ae18b02017-10-24 11:14:14 +030070xmlrpc_cmd = find_program('xmlrpc-c-config', required : false)
71if not xmlrpc.found() and xmlrpc_cmd.found()
72 libs_cmd = run_command(xmlrpc_cmd, 'client', '--libs')
73 cflags_cmd = run_command(xmlrpc_cmd, 'client', '--cflags')
Arkadiusz Hiler892abc62017-10-17 15:05:41 +030074
75 if libs_cmd.returncode() == 0 and cflags_cmd.returncode() == 0
76 xmlrpc = declare_dependency(compile_args: cflags_cmd.stdout().strip().split(),
77 link_args : libs_cmd.stdout().strip().split())
78 xmlrpc_util = declare_dependency()
79 xmlrpc_client = declare_dependency()
80 endif
81endif
82
Daniel Vetter9a7d8502017-09-05 14:36:14 +020083if pixman.found() and xmlrpc.found() and xmlrpc_util.found() and xmlrpc_client.found()
84 chamelium = declare_dependency(dependencies : [ pixman, xmlrpc,
85 xmlrpc_util, xmlrpc_client])
Arkadiusz Hiler892abc62017-10-17 15:05:41 +030086 config.set('HAVE_CHAMELIUM', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020087else
88 chamelium = dependency('', required: false)
89endif
90
91pthreads = dependency('threads')
92math = cc.find_library('m')
93realtime = cc.find_library('rt')
94dlsym = cc.find_library('dl')
95zlib = cc.find_library('z')
96
97if cc.has_header('linux/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +020098 config.set('HAVE_LINUX_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +020099endif
100if cc.has_header('sys/kd.h')
Daniel Vetter6e262252017-09-08 17:14:48 +0200101 config.set('HAVE_SYS_KD_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200102endif
103if cc.has_header('libgen.h')
Daniel Vetter6e262252017-09-08 17:14:48 +0200104 config.set('HAVE_LIBGEN_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200105endif
106if cc.has_header('sys/io.h')
Daniel Vetter6e262252017-09-08 17:14:48 +0200107 config.set('HAVE_SYS_IO_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200108endif
109if cc.has_header('cpuid.h')
110 # FIXME: Do we need the example link test from configure.ac?
Daniel Vetter6e262252017-09-08 17:14:48 +0200111 config.set('HAVE_CPUID_H', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200112endif
113
114if cc.has_member('struct sysinfo', 'totalram',
115 prefix : '#include <sys/sysinfo.h>')
Daniel Vetter6e262252017-09-08 17:14:48 +0200116 config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200117endif
118
119add_project_arguments('-D_GNU_SOURCE', language : 'c')
120add_project_arguments('-include', 'config.h', language : 'c')
121
Daniel Vetter6e262252017-09-08 17:14:48 +0200122config.set('PACKAGE_NAME', meson.project_name())
123config.set_quoted('PACKAGE_VERSION', meson.project_version())
124config.set_quoted('PACKAGE', meson.project_name())
125config.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
126config.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family())
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200127
Daniel Vetter6e262252017-09-08 17:14:48 +0200128configure_file(output: 'config.h', install: false, configuration: config)
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200129
Petri Latvala4ebf6872018-01-15 13:14:56 +0200130prefix = get_option('prefix')
131bindir = get_option('bindir')
132datadir = join_paths(get_option('datadir'), 'intel-gpu-tools')
133includedir = get_option('includedir')
134libdir = get_option('libdir')
135libexecdir = join_paths(get_option('libexecdir'), 'intel-gpu-tools')
136mandir = get_option('mandir')
137pkgconfigdir = join_paths(libdir, 'pkgconfig')
138
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200139subdir('lib')
140subdir('tests')
141subdir('benchmarks')
142subdir('tools')
143if libdrm_intel.found()
144 subdir('assembler')
Eric Anholtb26e9182017-09-27 11:30:52 -0700145 if ['x86', 'x86_64'].contains(host_machine.cpu_family())
146 subdir('overlay')
147 endif
Daniel Vetter9a7d8502017-09-05 14:36:14 +0200148endif
Daniel Vetter895236c2017-09-05 14:36:21 +0200149subdir('man')
Daniel Vetter491e8c12017-12-05 11:16:49 +0100150subdir('docs')