diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2017-10-22 18:40:24 +0300 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-02-06 13:12:33 +0000 |
commit | 781fd07e5518b21b5d910e0c58108a517903fda3 (patch) | |
tree | 74d3f45ddbbbba880cd6a5397de505a4a13d8c76 /meson.build | |
parent | a3a9e99b527936502a10aed7559799b2aa1e186e (diff) |
meson: Add meson build system
Allow building the driver with meson. Could probably use
plenty of cleanups, but at least it gives me a working driver.
And I think I managed to make it build everything that
autotools builds.
Quite a few compiler warnings were suppressed as well. Might
want to look at those at some point.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..227ca2eb --- /dev/null +++ b/meson.build @@ -0,0 +1,208 @@ +project('xf86-video-intel', 'c', + version : '2.99.917', + default_options: [ + 'warning_level=2', + 'c_std=gnu99', + ], + license : 'MIT', + meson_version : '>0.40.0') + +config = configuration_data() + +version = meson.project_version().split('.') +config.set('PACKAGE_VERSION_MAJOR', version[0]) +config.set('PACKAGE_VERSION_MINOR', version[1]) +config.set('PACKAGE_VERSION_PATCHLEVEL', version[2]) + +config.set_quoted('LIBEXEC_PATH', join_paths(get_option('prefix'), + get_option('libexecdir'))) + +cc = meson.get_compiler('c') + +xorg = dependency('xorg-server', version : '>= 1.6', required : true) +pthreads = dependency('threads', required : true) +pciaccess = dependency('pciaccess', version : '>= 0.10', required : true) + +x11 = dependency('x11', required : false) +xfixes = dependency('xfixes', required : false) +png = dependency('libpng', required : false) + +if not cc.has_function('clock_gettime', args : '-lrt') + error('clock_gettime() missing') +endif + +if cc.has_function('getline') + config.set('HAVE_GETLINE', 1) +endif + +if cc.has_function('strndup') + config.set('HAVE_STRNDUP', 1) +endif + +if cc.has_function('strcasecmp') + config.set('HAVE_STRCASECMP', 1) +endif + +dependency('xproto', required : true) +dependency('fontsproto', required : true) +dependency('damageproto', required : true) + +if cc.has_header_symbol('xorg-server.h', 'RANDR', + dependencies : xorg) + dependency('randrproto', required : true) +endif +if cc.has_header_symbol('xorg-server.h', 'RENDER', + dependencies : xorg) + dependency('renderproto', required : true) +endif +if cc.has_header_symbol('xorg-server.h', 'DPMSExtension', + dependencies : xorg) + dependency('xextproto', required : true) +endif + +with_tools = get_option('tools') + +config.set('USE_GIT_DESCRIBE', 1) +config.set('BUILDER_DESCRIPTION', 1) + +atomic_primitives = 'none' + +atomic_primitives_code = ''' +int atomic_add(int i) { + return __sync_fetch_and_add (&i, 1); +} +int atomic_cmpxchg(int i, int j, int k) { + return __sync_val_compare_and_swap (&i, j, k); +} +int main(void) { + return 0; +}''' +if cc.links(atomic_primitives_code, name : 'atomic primitives') + atomic_primitives = 'intel' + config.set('HAVE_ATOMIC_PRIMITIVES', 1) +endif + +if atomic_primitives == 'none' and cc.has_header('atomic_ops.h') + atomic_primitives = 'libatomic-ops' + config.set('HAVE_LIB_ATOMIC_OPS', 1) +endif + +if atomic_primitives == 'none' + 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.') +endif + +libudev = dependency('libudev', required : false) +if libudev.found() + config.set('HAVE_UDEV', 1) +endif + +cpuid_code = ''' +#include <cpuid.h> +#include <stddef.h> +int main(void) { + int eax, ebx, ecx, edx; + if (__get_cpuid_max(0, NULL) < 4) + return 0; + __cpuid_count(4, 0, eax, ebx, ecx, edx); + return 0; +}''' +if cc.links(cpuid_code, name : '__cpuid()') + config.set('HAVE_CPUID_H', 1) +endif + +has_shm = (cc.has_header('sys/ipc.h') and + cc.has_header('X11/extensions/XShm.h') and + cc.has_header('X11/extensions/shmproto.h') and + cc.has_header('X11/extensions/shmstr.h')) +if has_shm + config.set('HAVE_MIT_SHM', 1) + config.set('HAVE_X11_EXTENSIONS_SHMPROTO_H', 1) + config.set('HAVE_X11_EXTENSIONS_SHMSTR_H', 1) +endif + +if cc.has_header('X11/extensions/Xinerama.h') + config.set('HAVE_X11_EXTENSIONS_XINERAMA_H', 1) +endif + +if cc.has_header('X11/extensions/dpmsconst.h') + config.set('HAVE_X11_EXTENSIONS_DPMSCONST_H', 1) +endif + +pixman = dependency('pixman-1', version : '>= 0.16.0', required : true) + +if pixman.version() >= '0.24.0' + config.set('HAS_PIXMAN_TRIANGLES', 1) +endif +if pixman.version() >= '0.27.1' + config.set('HAS_PIXMAN_GLYPHS', 1) +endif + +with_kms = get_option('kms') +if with_kms + config.set('KMS', 1) +endif + +with_ums = get_option('ums') +if with_ums + has_ums = cc.has_header('vgaHW.h', + dependencies : xorg) + + # Currently 'required' doesn't work for cc.has_header() & co. + if not has_ums + error('UMS dependencies not met') + endif + + config.set('UMS', 1) +endif + +with_xvmc = get_option('xvmc') +if with_xvmc + dependency('xvmc', required : true) + dependency('dri2proto', required : true) + dependency('x11', required : true) + dependency('x11-xcb', required : true) + dependency('xcb-dri2', required : true) + dependency('xcb-aux', required : true) + dependency('libdrm_intel', required : true) + + config.set('ENABLE_XVMC', 1) +endif + +with_valgrind = get_option('valgrind') +if with_valgrind + message('Checking Valgrind support') + valgrind = dependency('valgrind', required : true) + config.set('HAVE_VALGRIND', 1) +endif + +inc = include_directories([ '.', 'src', 'xvmc', 'src/render_program', ]) + +add_project_arguments('-include', 'config.h', language : 'c') + +man_config = configuration_data() +man_config.set('appmansuffix', '1') +man_config.set('filemansuffix', '5') +man_config.set('drivermansuffix', '4') +man_config.set('miscmansuffix', '7') +man_config.set('xservername', + cc.get_define('__XSERVERNAME__', + prefix : '#include <xorg-server.h>', + dependencies : xorg)) +man_config.set('xconfigfile', + cc.get_define('__XCONFIGFILE____', + prefix : '#include <xorg-server.h>', + dependencies : xorg)) +man_config.set('vendorversion', '"@0@ @1@" "@2@"'.format(meson.project_name(), + meson.project_version(), + 'X Version 11')) + +subdir('src') +subdir('tools') + +if with_xvmc + subdir('xvmc') +endif + +subdir('man') + +configure_file(output: 'config.h', install: false, configuration: config) |