1fe8aea9eSmrgproject('xf86-video-intel', 'c', 2fe8aea9eSmrg version : '2.99.917', 3fe8aea9eSmrg default_options: [ 4fe8aea9eSmrg 'warning_level=2', 5fe8aea9eSmrg 'c_std=gnu99', 6fe8aea9eSmrg ], 7fe8aea9eSmrg license : 'MIT', 8fe8aea9eSmrg meson_version : '>0.40.0') 9fe8aea9eSmrg 10fe8aea9eSmrgconfig = configuration_data() 11fe8aea9eSmrg 12fe8aea9eSmrgversion = meson.project_version().split('.') 13fe8aea9eSmrgconfig.set('PACKAGE_VERSION_MAJOR', version[0]) 14fe8aea9eSmrgconfig.set('PACKAGE_VERSION_MINOR', version[1]) 15fe8aea9eSmrgconfig.set('PACKAGE_VERSION_PATCHLEVEL', version[2]) 16fe8aea9eSmrg 17fe8aea9eSmrgconfig.set_quoted('LIBEXEC_PATH', join_paths(get_option('prefix'), 18fe8aea9eSmrg get_option('libexecdir'))) 19fe8aea9eSmrg 20fe8aea9eSmrgcc = meson.get_compiler('c') 21fe8aea9eSmrg 22fe8aea9eSmrgxorg = dependency('xorg-server', version : '>= 1.6', required : true) 23fe8aea9eSmrgpthreads = dependency('threads', required : true) 24fe8aea9eSmrgpciaccess = dependency('pciaccess', version : '>= 0.10', required : true) 25fe8aea9eSmrg 26fe8aea9eSmrgx11 = dependency('x11', required : false) 27fe8aea9eSmrgxfixes = dependency('xfixes', required : false) 28fe8aea9eSmrgpng = dependency('libpng', required : false) 29fe8aea9eSmrg 30fe8aea9eSmrgif not cc.has_function('clock_gettime', args : '-lrt') 31fe8aea9eSmrg error('clock_gettime() missing') 32fe8aea9eSmrgendif 33fe8aea9eSmrg 34fe8aea9eSmrgif cc.has_function('getline') 35fe8aea9eSmrg config.set('HAVE_GETLINE', 1) 36fe8aea9eSmrgendif 37fe8aea9eSmrg 38fe8aea9eSmrgif cc.has_function('strndup') 39fe8aea9eSmrg config.set('HAVE_STRNDUP', 1) 40fe8aea9eSmrgendif 41fe8aea9eSmrg 42fe8aea9eSmrgif cc.has_function('strcasecmp') 43fe8aea9eSmrg config.set('HAVE_STRCASECMP', 1) 44fe8aea9eSmrgendif 45fe8aea9eSmrg 46fe8aea9eSmrgdependency('xproto', required : true) 47fe8aea9eSmrgdependency('fontsproto', required : true) 48fe8aea9eSmrgdependency('damageproto', required : true) 49fe8aea9eSmrg 50fe8aea9eSmrgif cc.has_header_symbol('xorg-server.h', 'RANDR', 51fe8aea9eSmrg dependencies : xorg) 52fe8aea9eSmrg dependency('randrproto', required : true) 53fe8aea9eSmrgendif 54fe8aea9eSmrgif cc.has_header_symbol('xorg-server.h', 'RENDER', 55fe8aea9eSmrg dependencies : xorg) 56fe8aea9eSmrg dependency('renderproto', required : true) 57fe8aea9eSmrgendif 58fe8aea9eSmrgif cc.has_header_symbol('xorg-server.h', 'DPMSExtension', 59fe8aea9eSmrg dependencies : xorg) 60fe8aea9eSmrg dependency('xextproto', required : true) 61fe8aea9eSmrgendif 62fe8aea9eSmrg 63fe8aea9eSmrgwith_tools = get_option('tools') 64fe8aea9eSmrg 65fe8aea9eSmrgconfig.set('USE_GIT_DESCRIBE', 1) 66fe8aea9eSmrgconfig.set('BUILDER_DESCRIPTION', 1) 67fe8aea9eSmrg 68fe8aea9eSmrgatomic_primitives = 'none' 69fe8aea9eSmrg 70fe8aea9eSmrgatomic_primitives_code = ''' 71fe8aea9eSmrgint atomic_add(int i) { 72fe8aea9eSmrg return __sync_fetch_and_add (&i, 1); 73fe8aea9eSmrg} 74fe8aea9eSmrgint atomic_cmpxchg(int i, int j, int k) { 75fe8aea9eSmrg return __sync_val_compare_and_swap (&i, j, k); 76fe8aea9eSmrg} 77fe8aea9eSmrgint main(void) { 78fe8aea9eSmrg return 0; 79fe8aea9eSmrg}''' 80fe8aea9eSmrgif cc.links(atomic_primitives_code, name : 'atomic primitives') 81fe8aea9eSmrg atomic_primitives = 'intel' 82fe8aea9eSmrg config.set('HAVE_ATOMIC_PRIMITIVES', 1) 83fe8aea9eSmrgendif 84fe8aea9eSmrg 85fe8aea9eSmrgif atomic_primitives == 'none' and cc.has_header('atomic_ops.h') 86fe8aea9eSmrg atomic_primitives = 'libatomic-ops' 87fe8aea9eSmrg config.set('HAVE_LIB_ATOMIC_OPS', 1) 88fe8aea9eSmrgendif 89fe8aea9eSmrg 90fe8aea9eSmrgif atomic_primitives == 'none' 91fe8aea9eSmrg error('xf86-video-intel depends upon atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package.') 92fe8aea9eSmrgendif 93fe8aea9eSmrg 94fe8aea9eSmrglibudev = dependency('libudev', required : false) 95fe8aea9eSmrgif libudev.found() 96fe8aea9eSmrg config.set('HAVE_UDEV', 1) 97fe8aea9eSmrgendif 98fe8aea9eSmrg 99fe8aea9eSmrgcpuid_code = ''' 100fe8aea9eSmrg#include <cpuid.h> 101fe8aea9eSmrg#include <stddef.h> 102fe8aea9eSmrgint main(void) { 103fe8aea9eSmrg int eax, ebx, ecx, edx; 104fe8aea9eSmrg if (__get_cpuid_max(0, NULL) < 4) 105fe8aea9eSmrg return 0; 106fe8aea9eSmrg __cpuid_count(4, 0, eax, ebx, ecx, edx); 107fe8aea9eSmrg return 0; 108fe8aea9eSmrg}''' 109fe8aea9eSmrgif cc.links(cpuid_code, name : '__cpuid()') 110fe8aea9eSmrg config.set('HAVE_CPUID_H', 1) 111fe8aea9eSmrgendif 112fe8aea9eSmrg 113fe8aea9eSmrghas_shm = (cc.has_header('sys/ipc.h') and 114fe8aea9eSmrg cc.has_header('X11/extensions/XShm.h') and 115fe8aea9eSmrg cc.has_header('X11/extensions/shmproto.h') and 116fe8aea9eSmrg cc.has_header('X11/extensions/shmstr.h')) 117fe8aea9eSmrgif has_shm 118fe8aea9eSmrg config.set('HAVE_MIT_SHM', 1) 119fe8aea9eSmrg config.set('HAVE_X11_EXTENSIONS_SHMPROTO_H', 1) 120fe8aea9eSmrg config.set('HAVE_X11_EXTENSIONS_SHMSTR_H', 1) 121fe8aea9eSmrgendif 122fe8aea9eSmrg 123fe8aea9eSmrgif cc.has_header('X11/extensions/Xinerama.h') 124fe8aea9eSmrg config.set('HAVE_X11_EXTENSIONS_XINERAMA_H', 1) 125fe8aea9eSmrgendif 126fe8aea9eSmrg 127fe8aea9eSmrgif cc.has_header('X11/extensions/dpmsconst.h') 128fe8aea9eSmrg config.set('HAVE_X11_EXTENSIONS_DPMSCONST_H', 1) 129fe8aea9eSmrgendif 130fe8aea9eSmrg 131fe8aea9eSmrgpixman = dependency('pixman-1', version : '>= 0.16.0', required : true) 132fe8aea9eSmrg 133fe8aea9eSmrgif pixman.version() >= '0.24.0' 134fe8aea9eSmrg config.set('HAS_PIXMAN_TRIANGLES', 1) 135fe8aea9eSmrgendif 136fe8aea9eSmrgif pixman.version() >= '0.27.1' 137fe8aea9eSmrg config.set('HAS_PIXMAN_GLYPHS', 1) 138fe8aea9eSmrgendif 139fe8aea9eSmrg 140fe8aea9eSmrgwith_kms = get_option('kms') 141fe8aea9eSmrgif with_kms 142fe8aea9eSmrg config.set('KMS', 1) 143fe8aea9eSmrgendif 144fe8aea9eSmrg 145fe8aea9eSmrgwith_ums = get_option('ums') 146fe8aea9eSmrgif with_ums 147fe8aea9eSmrg has_ums = cc.has_header('vgaHW.h', 148fe8aea9eSmrg dependencies : xorg) 149fe8aea9eSmrg 150fe8aea9eSmrg # Currently 'required' doesn't work for cc.has_header() & co. 151fe8aea9eSmrg if not has_ums 152fe8aea9eSmrg error('UMS dependencies not met') 153fe8aea9eSmrg endif 154fe8aea9eSmrg 155fe8aea9eSmrg config.set('UMS', 1) 156fe8aea9eSmrgendif 157fe8aea9eSmrg 158fe8aea9eSmrgwith_xvmc = get_option('xvmc') 159fe8aea9eSmrgif with_xvmc 160fe8aea9eSmrg dependency('xvmc', required : true) 161fe8aea9eSmrg dependency('dri2proto', required : true) 162fe8aea9eSmrg dependency('x11', required : true) 163fe8aea9eSmrg dependency('x11-xcb', required : true) 164fe8aea9eSmrg dependency('xcb-dri2', required : true) 165fe8aea9eSmrg dependency('xcb-aux', required : true) 166fe8aea9eSmrg dependency('libdrm_intel', required : true) 167fe8aea9eSmrg 168fe8aea9eSmrg config.set('ENABLE_XVMC', 1) 169fe8aea9eSmrgendif 170fe8aea9eSmrg 171fe8aea9eSmrgwith_valgrind = get_option('valgrind') 172fe8aea9eSmrgif with_valgrind 173fe8aea9eSmrg message('Checking Valgrind support') 174fe8aea9eSmrg valgrind = dependency('valgrind', required : true) 175fe8aea9eSmrg config.set('HAVE_VALGRIND', 1) 176fe8aea9eSmrgendif 177fe8aea9eSmrg 178fe8aea9eSmrginc = include_directories([ '.', 'src', 'xvmc', 'src/render_program', ]) 179fe8aea9eSmrg 180fe8aea9eSmrgadd_project_arguments('-include', 'config.h', language : 'c') 181fe8aea9eSmrg 182fe8aea9eSmrgman_config = configuration_data() 183fe8aea9eSmrgman_config.set('appmansuffix', '1') 184fe8aea9eSmrgman_config.set('filemansuffix', '5') 185fe8aea9eSmrgman_config.set('drivermansuffix', '4') 186fe8aea9eSmrgman_config.set('miscmansuffix', '7') 187fe8aea9eSmrgman_config.set('xservername', 188fe8aea9eSmrg cc.get_define('__XSERVERNAME__', 189fe8aea9eSmrg prefix : '#include <xorg-server.h>', 190fe8aea9eSmrg dependencies : xorg)) 191fe8aea9eSmrgman_config.set('xconfigfile', 192fe8aea9eSmrg cc.get_define('__XCONFIGFILE____', 193fe8aea9eSmrg prefix : '#include <xorg-server.h>', 194fe8aea9eSmrg dependencies : xorg)) 195fe8aea9eSmrgman_config.set('vendorversion', '"@0@ @1@" "@2@"'.format(meson.project_name(), 196fe8aea9eSmrg meson.project_version(), 197fe8aea9eSmrg 'X Version 11')) 198fe8aea9eSmrg 199fe8aea9eSmrgsubdir('src') 200fe8aea9eSmrgsubdir('tools') 201fe8aea9eSmrg 202fe8aea9eSmrgif with_xvmc 203fe8aea9eSmrg subdir('xvmc') 204fe8aea9eSmrgendif 205fe8aea9eSmrg 206fe8aea9eSmrgsubdir('man') 207fe8aea9eSmrg 208fe8aea9eSmrgconfigure_file(output: 'config.h', install: false, configuration: config) 209