Petri Latvala | 184a8d6 | 2018-01-16 12:32:46 +0200 | [diff] [blame] | 1 | project('intel-gpu-tools', 'c', |
Petri Latvala | 7b685d5 | 2018-01-16 15:23:20 +0200 | [diff] [blame] | 2 | version : '1.21', |
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 | 491e8c1 | 2017-12-05 11:16:49 +0100 | [diff] [blame] | 31 | inc_for_gtkdoc = include_directories('lib') |
| 32 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 33 | config = configuration_data() |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 34 | |
| 35 | libdrm = dependency('libdrm', version : '>=2.4.82') |
| 36 | libdrm_intel = dependency('libdrm_intel', required : false) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 37 | libdrm_nouveau = dependency('libdrm_nouveau', required : false) |
| 38 | libdrm_amdgpu = dependency('libdrm_amdgpu', required : false) |
| 39 | |
| 40 | pciaccess = dependency('pciaccess', version : '>=0.10') |
| 41 | libkmod = dependency('libkmod') |
Arkadiusz Hiler | 643dc09 | 2017-11-24 17:17:48 +0200 | [diff] [blame] | 42 | libprocps = dependency('libprocps', required : true) |
Arkadiusz Hiler | 3601533 | 2017-12-01 15:19:54 +0200 | [diff] [blame] | 43 | libunwind = dependency('libunwind', required : true) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 44 | |
| 45 | valgrind = dependency('valgrind', required : false) |
| 46 | if valgrind.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 47 | config.set('HAVE_VALGRIND', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 48 | endif |
| 49 | |
| 50 | cairo = dependency('cairo', version : '>1.12.0', required : false) |
| 51 | |
| 52 | libudev = dependency('libudev', required : false) |
| 53 | if libudev.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 54 | config.set('HAVE_UDEV', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 55 | endif |
| 56 | |
| 57 | glib = dependency('glib-2.0', required : false) |
| 58 | if glib.found() |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 59 | config.set('HAVE_GLIB', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 60 | endif |
| 61 | |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 62 | gsl = dependency('gsl', required : false) |
| 63 | alsa = dependency('alsa', required : false) |
| 64 | |
| 65 | pixman = dependency('pixman-1', required : false) |
| 66 | xmlrpc = dependency('xmlrpc', required : false) |
| 67 | xmlrpc_util = dependency('xmlrpc_util', required : false) |
| 68 | xmlrpc_client = dependency('xmlrpc_client', required : false) |
| 69 | |
Jani Nikula | 1ae18b0 | 2017-10-24 11:14:14 +0300 | [diff] [blame] | 70 | xmlrpc_cmd = find_program('xmlrpc-c-config', required : false) |
| 71 | if 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 Hiler | 892abc6 | 2017-10-17 15:05:41 +0300 | [diff] [blame] | 74 | |
| 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 |
| 81 | endif |
| 82 | |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 83 | if 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 Hiler | 892abc6 | 2017-10-17 15:05:41 +0300 | [diff] [blame] | 86 | config.set('HAVE_CHAMELIUM', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 87 | else |
| 88 | chamelium = dependency('', required: false) |
| 89 | endif |
| 90 | |
| 91 | pthreads = dependency('threads') |
| 92 | math = cc.find_library('m') |
| 93 | realtime = cc.find_library('rt') |
| 94 | dlsym = cc.find_library('dl') |
| 95 | zlib = cc.find_library('z') |
| 96 | |
| 97 | if cc.has_header('linux/kd.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 98 | config.set('HAVE_LINUX_KD_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 99 | endif |
| 100 | if cc.has_header('sys/kd.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 101 | config.set('HAVE_SYS_KD_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 102 | endif |
| 103 | if cc.has_header('libgen.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 104 | config.set('HAVE_LIBGEN_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 105 | endif |
| 106 | if cc.has_header('sys/io.h') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 107 | config.set('HAVE_SYS_IO_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 108 | endif |
| 109 | if cc.has_header('cpuid.h') |
| 110 | # FIXME: Do we need the example link test from configure.ac? |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 111 | config.set('HAVE_CPUID_H', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 112 | endif |
| 113 | |
| 114 | if cc.has_member('struct sysinfo', 'totalram', |
| 115 | prefix : '#include <sys/sysinfo.h>') |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 116 | config.set('HAVE_STRUCT_SYSINFO_TOTALRAM', 1) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 117 | endif |
| 118 | |
| 119 | add_project_arguments('-D_GNU_SOURCE', language : 'c') |
| 120 | add_project_arguments('-include', 'config.h', language : 'c') |
| 121 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 122 | config.set('PACKAGE_NAME', meson.project_name()) |
| 123 | config.set_quoted('PACKAGE_VERSION', meson.project_version()) |
| 124 | config.set_quoted('PACKAGE', meson.project_name()) |
| 125 | config.set('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version()) |
| 126 | config.set_quoted('TARGET_CPU_PLATFORM', host_machine.cpu_family()) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 127 | |
Daniel Vetter | 6e26225 | 2017-09-08 17:14:48 +0200 | [diff] [blame] | 128 | configure_file(output: 'config.h', install: false, configuration: config) |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 129 | |
Petri Latvala | 4ebf687 | 2018-01-15 13:14:56 +0200 | [diff] [blame] | 130 | prefix = get_option('prefix') |
| 131 | bindir = get_option('bindir') |
| 132 | datadir = join_paths(get_option('datadir'), 'intel-gpu-tools') |
| 133 | includedir = get_option('includedir') |
| 134 | libdir = get_option('libdir') |
| 135 | libexecdir = join_paths(get_option('libexecdir'), 'intel-gpu-tools') |
| 136 | mandir = get_option('mandir') |
| 137 | pkgconfigdir = join_paths(libdir, 'pkgconfig') |
| 138 | |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 139 | subdir('lib') |
| 140 | subdir('tests') |
| 141 | subdir('benchmarks') |
| 142 | subdir('tools') |
| 143 | if libdrm_intel.found() |
| 144 | subdir('assembler') |
Eric Anholt | b26e918 | 2017-09-27 11:30:52 -0700 | [diff] [blame] | 145 | if ['x86', 'x86_64'].contains(host_machine.cpu_family()) |
| 146 | subdir('overlay') |
| 147 | endif |
Daniel Vetter | 9a7d850 | 2017-09-05 14:36:14 +0200 | [diff] [blame] | 148 | endif |
Daniel Vetter | 895236c | 2017-09-05 14:36:21 +0200 | [diff] [blame] | 149 | subdir('man') |
Daniel Vetter | 491e8c1 | 2017-12-05 11:16:49 +0100 | [diff] [blame] | 150 | subdir('docs') |